九度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;
}
你可以试下这个数据
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