首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

九度OJ 1001,请问案列6为何不过?多谢

2013-04-02 
九度OJ 1001,请教案列6为何不过?谢谢#include iostreamusing namespace stdint main(){int m,nint a[1

九度OJ 1001,请教案列6为何不过?谢谢

#include <iostream>
using namespace std;

int main()
{
int m,n;
int a[12][12]={0},b[12][12]={0};

while(cin>>m>>n){
if(0==m||0==n)
return 0;
else
if(m<=10&&n<=10)
{
   int count=m+n;
//输入a矩阵
for(int i=0;i<m;i++){
for(int j=0;j<n;j++)
cin>>a[i][j];
}

//输入b矩阵,并将矩阵a、b相加
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin>>b[i][j];
        b[i][j]+=a[i][j];
}
}

/*for(int i=0;i<m;i++){
for(int j=0;j<n;j++)
cout<<b[i][j]<<" ";
cout<<endl;
}*/
//cout<<"初始值:"<<count<<endl;
for(int i=0;i<m;  ){
for(int j=0;j<n;j++){

  if(0!=b[i][j]){
  count--;
  i++;}
  else
 if(j==n-1)
 i++;

}
}

for(int j=0;j<n;  ){
for(int i=0;i<m;i++){

  if(0!=b[i][j]){
  count--;
  j++;}
  else
  if(i==m-1)
                      j++;

}
}
         /*for(int i=0;i<m;i++)
 cout<<i<<endl;*/
 //cout<<"最终值:";
 cout<<count<<endl;
  }
}
    return 0;
}

难道有什么特殊的案列没考虑到?
[解决办法]
题目呢?贴上来先。。
[解决办法]
#include <iostream>
using namespace std;
 
int main()
{
        int m,n;
        int a[12][12]={0},b[12][12]={0};
     
    while(cin>>m>>n){
        if(0==m
[解决办法]
0==n)
            return 0;
        else
        if(m<=10&&n<=10)
        {
           int count=m+n;
            //输入a矩阵
            for(int i=0;i<m;i++){
                for(int j=0;j<n;j++)
                    cin>>a[i][j];
            }
             
            //输入b矩阵,并将矩阵a、b相加
            for(int i=0;i<m;i++){


                for(int j=0;j<n;j++){
                    cin>>b[i][j];
                    b[i][j]+=a[i][j];
                }
            }
         
            /*for(int i=0;i<m;i++){
                for(int j=0;j<n;j++)
                    cout<<b[i][j]<<" ";
                cout<<endl;
            }*/
            //cout<<"初始值:"<<count<<endl;
            for(int i=0;i<m; i++){
                for(int j=0;j<n;j++){
                  if(0!=b[i][j]){
                      count--;
                      break;}
                }
            }
 
        for(int j=0;j<n; j++){
            for(int i=0;i<m;i++){
                   if(0!=b[i][j]){
                      count--;
                      break;}
                }
        }
         /*for(int i=0;i<m;i++)
             cout<<i<<endl;*/
         //cout<<"最终值:";
         cout<<count<<endl;
      }
    }
    return 0;
}


用break來中斷循環
[解决办法]
1 1
0
0
输出的时候是 2.。。~
[解决办法]
引用:
1 1
0
0
输出的时候是 2.。。~

。。。我弄错了
[解决办法]
你统计全0行和列的部分有问题


你可以试下这个数据
2 4
0 0 1 1
0 1 0 0
0 0 0 0
0 0 0 0
结果是 1
但你输出了3
[解决办法]
我想主要原因是if(0!=b[i][j]) {count--;i++;}沒有中斷循環
假如j<n且0!=b[i][j]就會count--;i++;
我貼的代碼結果是1

引用:
你统计全0行和列的部分有问题
你可以试下这个数据
2 4
0 0 1 1
0 1 0 0
0 0 0 0
0 0 0 0
结果是 1
但你输出了3

热点排行