思路:排序,判断每两个数之间的差值是否为2,若为2则这两个数之间的数就是断号ID,否则就没有,重号ID就是出现次数>1的数。
自己错误的原因:提交WA了好多次,再加上看了大佬们的思路,才发现自己之前一直把断号ID给理解错了,错在哪呢,看例子:就拿1和4说吧,我自己想的是1和4之间差2和3,所以断号ID是2和3。可惜这么想是错的,因为题目中已经说到断号ID为一个,而在这个例子中则出现了两个,所以1和4之间没有断号,即使有那也是建立在题目条件中有提到"可能存在多个断号ID"的情况下。
注意事项:可以忽略行数N,直接把所有数据全放到数组就行
参考代码:
#include <stdio.h> int main(){ int a[100001] = {0}; int n,m,num,max,min; int i; n = m = max = 0; min = 0x7fffffff; scanf("%d", &num); while(~scanf("%d", &num)){ if(max < num) max = num; if(min > num) min = num; a[num]++; } for(i = min+1; i <= max; i++){ if(a[i-1] == 1){ if(a[i] == 0 && a[i+1] == 1) n = i; } } for(i = min; i <= max; i++) if(a[i] > 1) m = i; printf("%d %d", n,m); return 0; }
0.0分
10 人评分
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:749 |
打水问题 (C语言代码)浏览:1066 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:879 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:676 |
【简单计算】 (C语言代码)浏览:622 |
WU-格式化数据输出 (C语言代码)浏览:1742 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:500 |
K-进制数 (C语言描述,蓝桥杯)浏览:925 |
回文数字 (C语言代码)浏览:2509 |
A+B for Input-Output Practice (VI) (C语言代码)浏览:552 |