C++提交出现段错误

新手上路,请多包涵

第一行有一个水字,从第二行开始,将上一行的水换成水题,题换成题水,列出如下:


水题
水题题水
输入有多组数据,每组数据一行。
每行有两个数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;

}

阅读 2.1k
1 个回答
新手上路,请多包涵

刷OJ的时候,段错误几乎所有情况下都是数组定义的太小导致的,或者是数组下标越界,仔细检查一下题目中有没有说明n和k的范围。如果没有强调,那么你需要用vector、malloc处理;或者直接来一个暴力的办法:直接把数组开到2000维度,注意这样要把数组定义成全局的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题