Yunjin @ 2021-08-10 14:23:20
我不知道哪里错了,大佬们可以帮我看看吗?
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[35][35],n,z = 0;
cin>>n;
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++){
cin>>a[i][j];
}
}
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++){
if((a[i][j]==1&&a[i+1][j+1]!=1)||(a[i][j]==2&&a[i+1][j+1]!=1)){
a[i+1][j+1] = 2;
if(a[i][j+1] == 0&&a[i+1][j+1]==1||2){
a[i][j+1] == 2;
}
}
if((a[i+1][j]==1||2)||(a[i][j+1]==1||2)){
a[i][j] == 2;
}
}
}
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
by yyandy @ 2021-08-10 14:52:34
7
1 1 1 0 0 0 0
1 0 1 0 1 1 1
1 0 1 1 1 0 1
1 0 0 0 0 0 1
1 1 1 1 1 0 1
0 0 0 0 1 1 1
0 0 0 0 0 0 0
hack,@叫我老赵子
by yyandy @ 2021-08-10 14:54:11
这题还是老老实实搜索吧。
by Yunjin @ 2021-08-10 15:11:51
奥
by nju181840342 @ 2021-08-10 16:33:12
@叫我老赵子 很多问题,首先为什么1的右下角是0,就要把这个0变成2,1的左上角也可以是2,右下角也可以是0;其次==的优先级比||高,也就是说
a[i][j]==1||2;
等价于
(a[i][j]==1)||2
而2转化成逻辑变量时对应true,就是说2代表对,那么a[i][j]==1||2的值一定是对。这里不能偷懒,必须写成
a[i][j]==1||a[i][j]==2
最后,如果没有学过广度优先搜索就别做这题了,这题得用这个方法。
by Yunjin @ 2021-08-10 16:48:51
嗯,明白啦,谢谢各位
by 幸福_焦天傲 @ 2021-08-26 10:39:07
你好