问题标题: 酷町堂:4699

0
0
宫成
宫成
中级守护
中级守护

4699 矩阵置零经验值:1200 时间限制:1000毫秒

题目描述 Description

给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。例如,输入矩阵为

 

1 1 1

1 0 1

1 1 1

清零后,矩阵为

 

1 0 1

0 0 0

1 0 1

输入描述 Input Description

m+1行,第一行两个整数m、n,表示输入矩阵的大小

接下来m行,每行n个数,为0或1

 

输出描述 Output Description

清零后的矩阵,同一行相邻的数用空格隔开

 

样例输入 Sample Input

3 3

1 1 1

1 0 1

1 1 1

样例输出 Sample Output

1 0 1

0 0 0

1 0 1

数据范围及提示 Data Size & Hint

1<=m,n<=100

#include<iostream>

using namespace std;

int n,m,a[105][105],pos=0;

int main(){

cin>>n>>m;

for(int i=1;i<=n;i++){ // 1 0 1

for(int j=1;j<=m;j++){// 0 0 0

cin>>a[i][j]; // 1 0 1

}

}

for(int i=1;i<=n;i++){// i=2 j=2

/*if(pos==1){

break;

}*/

for(int j=1;j<=m;j++){

if(a[i][j]==0){

for(int q=1;q<=n;q++){

a[q][j]=1234567;

}

for(int p=1;p<=m;p++){

a[i][p]=1234567;

}

//break;

}

}

}

for(int i=1;i<=n;i++){

for(int j=1;j<=m;j++){

if(a[i][j]==1234567){

a[i][j]=0;

}

}

}

for(int i=1;i<=n;i++){

for(int j=1;j<=m;j++){

cout<<a[i][j]<<" ";

}

cout<<endl;

}

return 0;

}

为什么只有30分,哪错了?


0
汪宇航
汪宇航
新手启示者
新手启示者

看不懂。。。

#include <   >
using namespace std;
int main(){
    int m,n,a[   ][   ],b[  ][   ];
    cin>>m>>n;
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            cin>>a[ ][ ];
            b[ ][ ]=a[ ][ ];
        }
    }
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            if(!a[i][j]){
                for(int k=1;k<=m;k++){
                    b[ ][ ]=0;
                }
                for(int k=1;k<=n;k++){
                    b[ ][ ]=0;
                }
            }
        }
    }
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            cout<<b[ ][ ]<<' ';
        }
        cout<<    ;
    }
    return 0;
}

空白自己想

我要回答