- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九次上机题 - 参考答案
实验九 综合应用(二)
实验目的:
综合使用数组、函数、指针和结构体,解决一些简单问题。
一、邻接矩阵转化为Laplace矩阵图是研究对象关系(本题考虑的关系是对称的关系)的一个强有力工具。在研究中,一般用结点表示对象,若两对象间有联系,则在两结点间连一条线。利用这种方法,可以把众多问题抽象成图模型,从而利用图论的方法进行解决。
在计算机中存储图,常用的一种方式是邻接矩阵,方法是先对图中所有结点编号:1,2,3,…,n(假设有n个结点),对于矩阵第i行第j列元素,如果结点i与结点j有连线,则置该元素为1,否则置为0。显然,邻接矩阵是n*n的,且该矩阵是对称矩阵。下面是图论中著名的Peterson图及其对应的邻接矩阵。
对于图中的结点,与之相连的边数,称为该结点的度。在图论研究中,Laplace矩阵也是图的一种常用表示,该矩阵可以由图的邻接矩阵得到,方法是先求出图中各结点的度,再按照结点编号顺序得到一个度对角矩阵,利用度对角矩阵减去邻接矩阵,就得到图的Laplace矩阵。下面是Peterson图的Laplace矩阵。
从上面矩阵可以观察出,邻接矩阵为1的元素在Laplace矩阵中变为-1,对角元素是邻接矩阵对应行的行和。
Input
有多组测试数据。输入的第一行是整数T(0T=200),表示测试数据的组数。每组测试数据的第一行,是一个整数R,表示本组测试数据中邻接矩阵是R*R的,随后是一个R*R的邻接矩阵,每个矩阵元素后有一个空格。其中,2=R=20。
Output
对应每组测试数据,输出一个对应的Laplace矩阵,每个矩阵元素后应有一个空格。相邻两个矩阵输出用一个空行隔开。
250 1 0 1 1 1 0 0 1 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 60 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 0 1 3 -1 0 -1 -1 -1 2 0 -1 0 0 0 2 -1 -1 -1 -1 -1 5 -1 -1 0 -1 -1 4 3 -1 0 -1 -1 0 -1 4 0 -1 -1 0 0 0 3 -1 0 -1 -1 -1 -1 6 -1 -1 -1 -1 0 -1 3 0 0 0 -1 -1 0 3
#include stdio.h
int main()
{
int i,j,r,s,T;
int a[20][20];
freopen(1.in,r,stdin);
freopen(1.out,w,stdout);
scanf(%d,T);
while(T--)
{
scanf(%d,r);
for(i=0;ir;i++)
{
s=0;
for(j=0;jr;j++)
{
scanf(%d,a[i][j]);
if(a[i][j]==1)
{
s++;
a[i][j]=-1;
}
}
a[i][i]=s;
}
for(i=0;ir;i++)
{
for(j=0;jr;j++)
{
printf(%d ,a[i][j]);
}
printf(\n);
}
printf(\n);
}
return 0;
}
二、数制转换任给32位二进制数字序列(整数的补码),把它转化为对应的十进制数和十六进制数。
本题有多组测试数据,第一行是测试数据组数T。下面每一行是32位二进制数字序列。
对应每组输入,输出一行对应的十进制整数和十六进制整数,中间用空格隔开。如果十六进制中数字超过9,用大写字母表示。
200000000000000000001010111111011111111111111111111111111111001115627 15FB-25 FFFFFFE7
#include stdio.h
#include string.h
int main(void)
{
char ch[33];
unsigned k,a[32];
int i,j,T;
freopen(1.in,r,stdin);
freopen(1.out,w,stdout);
a[31]=1;
for(i=30;i=0;i--)//得到恰好只有一位为1的数
a[i]=a[i+1]1;
scanf(%d,T);
getchar();//吸收回车符
for(i=0;iT;i++)
{
k=0;
gets(ch);//得到二进制数字序列
for(j=0;j32;j++)
原创力文档


文档评论(0)