题目背景
本人最初作 以此纪念伟大的ios、安卓、PSV平台音乐游戏《cytus》
后续将不断更新。
-------------Chapter V-1-------------
话说两位战士整天靠在一起好无聊啊,于是她们打算——玩游戏!(?)
她们就用剑画了一个十字架,然后开始抛石子,好好玩啊(???)
两个人每人有一个石子,当她们丢完后,正在自学数学的小蓝大叫:把他们连起来不就是一次函数吗!! 于是乎,她们就连了起来,然后她们开始计算。此时她们发现一个严重的问题——没有草稿纸!(这什么破问题= =)
由于脑补能力太低,她们只好让你来帮帮忙啦~
题目描述
给出图形(十字架可以视为x轴和y轴),请计算出函数解析式。
输入格式
第一行,一个正整数n,表示该图形大小是n*n;
接下来n行,每行n个字符,1表示坐标轴,x表示石子,0表示空地。
横行的1是x轴,竖列的1是y轴。 上下两行,左右两列的距离恒为1。
输出格式
输出一行,即y=kx+b,或y=kx,y=b,x=b;(k,b为常数)
常数始终保留四位小数
输入输出样例
输入 #1复制
3
010
111
x1x
输出 #1复制
y=-1.0000
说明/提示
切记要分类
数据不需判错
100%的数据,3<=n<=16
代码:
#include<iostream>
#include <algorithm>
using namespace std;
char c[20][20];
int main(){
int n;
cin>>n;
int cnt1=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>c[i][j];
if(c[i][j]=='1'){
cnt1++;//统计‘1’的个数
}
}
}
int x0=1,y0=1;
int x1=1,y1=1;
bool flag=0;
int x2=1,y2=1;
bool flag1=1;
int x3=1,y3=1;
int x4=1,y4=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(c[i][j]=='x'&&flag==0){//判断第一个x的位置
x1=i;
y1=j;
flag=1;
}
else if(c[i][j]=='x'&&flag1==1){//判断第二个x的位置
x2=i;
y2=j;
flag1=0;
}
}
}
if(cnt1==2*n-1){//查看x是否在坐标轴上,也就是‘1’上
for(int i=1;i<=n;i++){//若不在,寻找坐标原点的位置
int p=0;
for(int j=1;j<=n;j++){
if(c[i][j]=='1'){
p++;
}
}
if(p==n){
x0=i;
}
}
for(int i=1;i<=n;i++){
int q=0;
for(int j=1;j<=n;j++){
if(c[j][i]=='1'){
q++;
}
}
if(q==n){
y0=i;
}
}
}
else{//若x在坐标轴上,则判断坐标原点的位置
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if((c[i][j]=='1'||c[i][j]=='x')&&(c[i-1][j]=='1'||c[i-1][j]=='x')&&(c[i][j-1]=='1'||c[i][j-1]=='x')&&(c[i][j+1]=='1'||c[i][j+1]=='x')&&(c[i+1][j]=='1'||c[i+1][j]=='x')){
x0=i;
y0=j;
}
}
}
}
// cout<<x0<<" "<<y0<<"\n";
// cout<<x1<<" "<<y1<<"\n";
// cout<<x2<<" "<<y2<<"\n";
x3=y1-y0;
x4=y2-y0;
y3=x0-x1;
y4=x0-x2;//求出两个x的坐标
// cout<<x3<<" "<<y3<<"\n";
// cout<<x4<<" "<<y4<<"\n";
int d1=y3-y4;
int d2=x3-x4;
if(d1==0&&d2!=0){
double d=y3;
printf("y=%.4lf",d);
}if(d1!=0&&d2==0){
double d1=x3;
printf("x=%.4lf",d1);
}if(d1!=0&&d2!=0){
double k=1.0*d1/d2;
double b=1.0*y3-k*x3;
if(b==0){
printf("y=%.4lfx",k);
}
else if(b>0){
printf("y=%.4lfx+%.4lf",k,b);
}else{
printf("y=%.4lfx%.4lf",k,b);
}
}
return 0;
}