//大概意思就是:构成一个较大的二位数组(!!!!这个好像不可以直接定义,需要其他办法),然后行和列就是表示两岸,数值表示之前的桥的耐久度, //先遍历行,如果一整行的值都是0,说明这一个岸被孤立了,所以就满足题意。跳出循环,输出day。 #include<stdio.h> #include<malloc.h> int shuzu[10001][10001] = { 0 };//这里有点问题,数组定义过大。应该是唯一不对的点,但是在我的编译器VS2019可以用 //数组用来存相连的情况,数组中的值存天数。 int main() { int n = 0, m = 0, a = 0, b = 0, t = 0; int count = 0, day = 0; if (scanf("%d %d", &n, &m))//输入岸和桥的值 { } for (int i = 1; i <= m; i++) { if (scanf("%d %d %d", &a, &b, &t))//输入连接情况 { } shuzu[a][b]= t;//把使用天数写到数组中 shuzu[b][a] = t; } int flag = 0;//定义一个标志,用于结束循环 while (flag==0) { for (int j = 1;j <= m;j++)//先循环行 { flag = 0;//先让标志归零 for (int k = 1; k <= m; k++)//循环列 { if (shuzu[j][k]== 0)//意思就是两岸不相连 { count++; } } if (count == m)//说明改行所有数均为0,即这个岸不和其他岸相连,符合题意,跳出两层循环,输出day就可以了。 { flag = 1; break; } else { count = 0;//继续循环下一行,先把count清零。 } } if (count==m)//这里防止day++多执行; { break;//跳出大循环 } else { day++;//如果不满足上述条件,就说明没有岸被孤立,day++ } for (int s = 1; s <= m; s++)//判断数组中的数值,如果有大于0的,就说明还没有坏掉,让他-1,就是耐久度-1; { for (int t = 1;t <= m;t++) { if (shuzu[s][t] > 0) { shuzu[s][t]--; } } } } printf("%d", day);//输出day!就是结果了。 return 0; }
0.0分
2 人评分
数列 (C++代码)浏览:664 |
C语言训练-角谷猜想 (C++代码)(3N+1问题)浏览:1745 |
C语言程序设计教程(第三版)课后习题8.2 (Java代码)浏览:2269 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:567 |
Pascal三角 (C语言代码)格式错误浏览:516 |
成绩转换 (C语言代码)浏览:1005 |
printf基础练习2 (C语言代码)浏览:741 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:505 |
WU-printf基础练习2 (C++代码)浏览:2000 |
C语言程序设计教程(第三版)课后习题6.3 (C++代码)浏览:949 |