求助!!!发现一个很神奇的事情
  • 板块学术版
  • 楼主CHEN08_94
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/13 23:57
  • 上次更新2024/8/14 10:33:12
查看原帖
求助!!!发现一个很神奇的事情
633110
CHEN08_94楼主2024/8/13 23:57

不理解,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;
} 

/

2024/8/13 23:57
加载中...