蓝桥杯 错误票据
2015-04-25 19:38
260 查看
这道题很简单,测试数据也很水,按理说我的程序遇到大一点的数据就过不去了,可是后台只有两组数据,最大的只到2000+,数组开大一点不就好啦。。。于是一开始,开了一个巨大巨大的数组,这么蠢的方法真是不好意思
因为实在是太不好意思了,于是弄了一个不那么蠢的,起码按要求排了一个序。。。
#include<stdio.h> #include<string.h> #include<ctype.h> int main(){ int n, i, len, num, min = 99999, max = 0; int chong, que, flag; int table[3000] = {0}; char a[10000]; scanf("%d", &n); getchar(); while( n--){ gets(a); len = strlen(a); num = 0; flag = 0; for( i = 0; i <= len; i++){ if( !isdigit(a[i])){ if( flag == 1){ if( num > max){ max = num; } if( num < min){ min = num; } if( table[num]){ chong = num; } else{ table[num] = 1; } num = 0; flag = 0; } } else{ num = num * 10 + a[i] - '0'; flag = 1; } } } for( i = min; i <= max; i++){ if( table[i] == 0){ que = i; break; } } printf("%d %d", que, chong); return 0; }
因为实在是太不好意思了,于是弄了一个不那么蠢的,起码按要求排了一个序。。。
#include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> int cmp( const void* a, const void* b){ return *(int*)a - *(int*)b; } int main(){ int n, i, j = 0, len, num; int que, chong, size, flag; int table[3000] = {0}; char a[10000]; scanf("%d", &n); getchar(); while( n--){ gets(a); len = strlen(a); num = 0; flag = 0; for( i = 0; i <= len; i++){ if( !isdigit(a[i])){ if( flag == 1){ table[j] = num; j++; num = 0; flag = 0; } } else{ num = num * 10 + a[i] - '0'; flag = 1; } } } qsort( table, j, sizeof(int), cmp); for( i = 1; i < j; i++){ if( table[i] == table[i-1] + 2){ que = table[i-1] + 1; } if( table[i] == table[i-1]){ chong = table[i]; } } printf("%d %d", que, chong); return 0; }