第一行有一个水字,从第二行开始,将上一行的水换成水题,题换成题水,列出如下:
水
水题
水题题水
输入有多组数据,每组数据一行。
每行有两个数n,k
针对每组数据,求出n行k列的字是“水”还是“题”, 若是水,输出0,若是题,输出1。
想直接用0代替水,用1代替题,提交之后报段错误,但是自己编译运行都没问题。。。我应该算个新手。。救救孩子。。
代码如下
include<iostream>
using namespace std;
int main(){
int i,j,n,k,a[20][20];
while(cin>>n>>k){
a[0][0]=0;
for(i=1;i<n;i++){
for(j=0;j<n;j++){
if(a[i-1][j-1]==0){
a[i][j]=0;
a[i+1][j+1]=1;
}
if(a[i-1][j-1]==1){
a[i][j]=1;
a[i+1][j+1]=0;
}
}
}
cout<<a[n][k]<<endl;
}
return 0;
}
刷OJ的时候,段错误几乎所有情况下都是数组定义的太小导致的,或者是数组下标越界,仔细检查一下题目中有没有说明n和k的范围。如果没有强调,那么你需要用vector、malloc处理;或者直接来一个暴力的办法:直接把数组开到2000维度,注意这样要把数组定义成全局的。