不理解,RT
#include<bits/stdc++.h>
using namespace std;
const int N=110;
int g[N][N];
/*
4
0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 0
*/
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&g[i][j]);
if(g[i][j]) g[j][i]=1;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++) printf("%d ",g[i][j]);
printf("\n");
}
return 0;
}
输入
0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 0
实际得到
0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 0
期望得到
1 0 1 0
0 1 0 1
0 0 1 0
把程序改成这个就可以了
#include<bits/stdc++.h>
using namespace std;
const int N=110;
int g[N][N];
/*
4
0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 0
*/
struct node{
int x,y;
};
int main()
{
int n;
scanf("%d",&n);
queue<node>q;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&g[i][j]);
if(g[i][j]==1) q.push({j,i});
}
}
while(!q.empty())
{
node u=q.front();
g[u.x][u.y]=1;
q.pop();
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++) printf("%d ",g[i][j]);
printf("\n");
}
return 0;
}
/