是的
来源:互联网 发布:谷歌浏览器 mac 编辑:程序博客网 时间:2024/04/28 17:12
#include <cstdio>
#include <cstring>
#include <algorithm>
#define MAX 100
using namespace std;
int map[MAX][MAX];//输入的矩阵
int convert[MAX][MAX];//变换后的矩阵
int mark[MAX][MAX];//标记变换位置
int sum;//记录变换总位置数
int n;//n 乘 n矩阵
void getmap()
{
printf("输入邻接矩阵:\n");
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
scanf("%d", &map[i][j]);
convert[i][j] = map[i][j];
mark[i][j] = 0;
}
}
sum = 0;
printf("\n");
}
void warshall()
{
int k, i, j;
for(k = 1; k <= n; k++)//对当前行的每一个元素
{
for(i = 1; i <= n; i++)//遍历
{
for(j = 1; j <= n; j++)//遍历每一行
{
convert[i][j] = (convert[i][j] || convert[i][k]&convert[k][j]);
}
}
}
printf("变换后邻接矩阵:\n");
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
{
if(j > 1) printf(" ");
printf("%d", convert[i][j]);
if(convert[i][j] != map[i][j])
sum++, mark[i][j] = 1;
}
printf("\n");
}
printf("\n");
printf("变换数有%d个\n", sum);
if(sum)
printf("变换位置如下:\n");
else
return ;
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
{
if(mark[i][j])
printf("位置(%d, %d)由%d -> %d\n", i, j, map[i][j], convert[i][j]);
}
}
printf("\n");
}
int main()
{
while(printf("顶点个数: "), scanf("%d", &n), n)
{
getmap();
warshall();
}
return 0;
}
#include <cstring>
#include <algorithm>
#define MAX 100
using namespace std;
int map[MAX][MAX];//输入的矩阵
int convert[MAX][MAX];//变换后的矩阵
int mark[MAX][MAX];//标记变换位置
int sum;//记录变换总位置数
int n;//n 乘 n矩阵
void getmap()
{
printf("输入邻接矩阵:\n");
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
scanf("%d", &map[i][j]);
convert[i][j] = map[i][j];
mark[i][j] = 0;
}
}
sum = 0;
printf("\n");
}
void warshall()
{
int k, i, j;
for(k = 1; k <= n; k++)//对当前行的每一个元素
{
for(i = 1; i <= n; i++)//遍历
{
for(j = 1; j <= n; j++)//遍历每一行
{
convert[i][j] = (convert[i][j] || convert[i][k]&convert[k][j]);
}
}
}
printf("变换后邻接矩阵:\n");
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
{
if(j > 1) printf(" ");
printf("%d", convert[i][j]);
if(convert[i][j] != map[i][j])
sum++, mark[i][j] = 1;
}
printf("\n");
}
printf("\n");
printf("变换数有%d个\n", sum);
if(sum)
printf("变换位置如下:\n");
else
return ;
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
{
if(mark[i][j])
printf("位置(%d, %d)由%d -> %d\n", i, j, map[i][j], convert[i][j]);
}
}
printf("\n");
}
int main()
{
while(printf("顶点个数: "), scanf("%d", &n), n)
{
getmap();
warshall();
}
return 0;
}
0 0
- 是的
- 是的
- 是的
- 是的
- 是的
- 是的
- 是的
- 是的
- 是的
- 是的
- 那边爱上是的是的是的是的
- 安师大是的是的
- 士大夫是的根深蒂固是的根深蒂固是的个
- 是的vsdvdsssdvsd
- 是的范德萨
- 是的根深蒂固
- 发松岛枫顺丰是的
- 啊啊是的
- Java SWT事件
- Linux正则表达式-重复出现的字符
- 如何查询指定一行上下2行数据
- 《C++ primer》第五版 第三章 笔记
- android Handler、looper的个人理解
- 是的
- c语言一起学习之建立头文件(二)
- SpeechMarker API 与端点检测
- xUtils
- PAT 1007 Course List for Student (25)
- 使用Unity3D编写ARPG游戏——角色属性的定义与实现(二)
- css之css与div
- 怎样将收藏的网址导入到搜狗账号中
- Android多线程从入门到精通