user-0 提问: 大家好  在做oj上的一个题目的时候遇到麻烦了 大家帮忙分析一下

回复:
user: user-0
content: 引用 6 楼 zhao4zhong1 的回复:Accept多谢啊，经验不足，没见过这个缩写。

user: user-1
content: Accept

user: user-0
content: 引用 2 楼 qq423399099 的回复:网上找下AC的代码吧。 1.看看你们的输入输出格式是不是一致 2.多测试一些样例你好  你说的ac的代码是什么意思？是acm吗？

user: user-0
content: 引用 1 楼 cfjtaishan 的回复:出现多次打印17，检查一下你的输入是否有非数字的。除了将scanf的返回值与EOF比较，另外还需要判断输入是否合法； 以下是使用递归函数完成的： #include<stdio.h> #include<stdlib.h>  int count_time(int *array, int len, int num);  static int comp(const void*a,const void*b) {     return *(int*)b-*(int*)a; } static int total_tm = 0;  int main() {     int i = 0, ret;     int *array;     int number_of_man;      int sum_tm = 0;     printf("Please input the number of men(CTR+D to exit):\n");     ret = scanf("%d", &number_of_man);     while (ret != EOF && ret == 1) {         array = (int *)malloc(number_of_man * sizeof(int));         if (!array) {             fprintf(stderr, "malloc error!\n");             return -1;         }         for(i = 0; i < number_of_man; i++)             scanf("%d", array + i);          qsort(array, number_of_man, sizeof(int), comp);         sum_tm = count_time(array, number_of_man, number_of_man);         free(array);         printf("total time is %d\n", sum_tm);         total_tm = 0;         printf("Please input the number of men(CTR+D to exit): \n");         ret = scanf("%d", &number_of_man);     }       return 0; }  /* len: the number of man */ int count_time(int *array, int len, int num) {     if(num == 1) {         total_tm += array[0];     } else if(num == 2) {         total_tm += array[0];     } else if(num == 3) {         total_tm += (array[0] + array[1] + array[2]);     } else {         if((2*array[1]) >= (array[0]+array[num-2])) {             total_tm += (array[0] + array[1] + 2 * array[num-1]);             array[0] = 0;             array[1] = 0;             num -= 2;             qsort(array, len, sizeof(int), comp);             total_tm = count_time(array, len,  num);         } else if((2*array[1])<(array[0]+array[num-2]))         {             total_tm += (2 * array[num-2] + array[num-1] + array[0]);              array[0] = 0;             array[1] = 0;             num -= 2;             qsort(array, len, sizeof(int),comp);             total_tm = count_time(array, len, num);         }     }     return total_tm; }    你好 非常感谢你可以帮忙检查并且回复一段自己的代码，我马上就仔细研究一下你说的问题，非常感谢！

user: user-0
content: 引用 楼主 NDFour 的回复:我在做学校的oj上的一个C语言编程题目 题目如下     这是代码提交后的错误界面，，也没看懂什么意思     下面是我自己写的代码，有点乱，，，看起来有点辛苦，实在不好意思  话说我的代码就是按照上面题目下面的提示写出来的，本地测试出来的结果是正确的，但是不知道提交后测试哪些数据时出了问题 ，所以麻烦大家帮忙看一下，代码我疏忽了哪里，还请提示一下。 万分感谢！！   注：array数组用于存放用户 输入的每个人过桥所用的时间  #include<stdio.h> #include<stdlib.h> //用来给时间数组排序 int comp(const void*a,const void*b) {     //输出的数组是按从大到小排列的     return *(int*)b-*(int*)a; }  int main() {     int i=0;     int *array;      int number_of_man;     while(scanf("%d",&number_of_man)!=EOF)     {         int n_of_man=number_of_man;         array=(int*)malloc(n_of_man*sizeof(int));          for(i=0; i<n_of_man; i++)         {             scanf("%d",(array+i));         }         qsort(array,n_of_man,sizeof(int),comp);          int sum_of_time=0;  loop:         //1个人的时候         if(n_of_man==1)             sum_of_time+=array[0];         //两个人的时候         else if(n_of_man==2)             sum_of_time+=array[0];         //3个人的时候         else if(n_of_man==3)             sum_of_time+=(array[0]+array[1]+array[2]);  //大于或等于4个人的时候         else         {             //模式1             if((2*array[1])>=(array[0]+array[n_of_man-2]))             {                 sum_of_time+=(array[0]+array[1]+(2*array[n_of_man-1]));                 array[0]=0;                 array[1]=0;                 n_of_man-=2;                 qsort(array,number_of_man,sizeof(int),comp);                 goto loop;             }  //模式2             else if((2*array[1])<(array[0]+array[n_of_man-2]))             {                 //大于等于4个人的时候                 sum_of_time+=((2*array[n_of_man-2])+array[n_of_man-1]+array[0]);                  array[0]=0;                 array[1]=0;                 n_of_man-=2;                 qsort(array,number_of_man,sizeof(int),comp);                 goto loop;             }         } //初始化数组         int i=0;         for(i=0; i<number_of_man; i++)             array[i]=0;         printf("%d\n",sum_of_time);         n_of_man=0;         number_of_man=0;     }      return 0; }你好 非常感谢你可以帮忙检查并且回复一段自己的代码，我马上就仔细研究一下你说的问题，非常感谢！

user: user-2
content: 网上找下AC的代码吧。 1.看看你们的输入输出格式是不是一致 2.多测试一些样例

user: user-3
content: 出现多次打印17，检查一下你的输入是否有非数字的。除了将scanf的返回值与EOF比较，另外还需要判断输入是否合法； 以下是使用递归函数完成的： #include<stdio.h> #include<stdlib.h>  int count_time(int *array, int len, int num);  static int comp(const void*a,const void*b) {     return *(int*)b-*(int*)a; } static int total_tm = 0;  int main() {     int i = 0, ret;     int *array;     int number_of_man;      int sum_tm = 0;     printf("Please input the number of men(CTR+D to exit):\n");     ret = scanf("%d", &number_of_man);     while (ret != EOF && ret == 1) {         array = (int *)malloc(number_of_man * sizeof(int));         if (!array) {             fprintf(stderr, "malloc error!\n");             return -1;         }         for(i = 0; i < number_of_man; i++)             scanf("%d", array + i);          qsort(array, number_of_man, sizeof(int), comp);         sum_tm = count_time(array, number_of_man, number_of_man);         free(array);         printf("total time is %d\n", sum_tm);         total_tm = 0;         printf("Please input the number of men(CTR+D to exit): \n");         ret = scanf("%d", &number_of_man);     }       return 0; }  /* len: the number of man */ int count_time(int *array, int len, int num) {     if(num == 1) {         total_tm += array[0];     } else if(num == 2) {         total_tm += array[0];     } else if(num == 3) {         total_tm += (array[0] + array[1] + array[2]);     } else {         if((2*array[1]) >= (array[0]+array[num-2])) {             total_tm += (array[0] + array[1] + 2 * array[num-1]);             array[0] = 0;             array[1] = 0;             num -= 2;             qsort(array, len, sizeof(int), comp);             total_tm = count_time(array, len,  num);         } else if((2*array[1])<(array[0]+array[num-2]))         {             total_tm += (2 * array[num-2] + array[num-1] + array[0]);              array[0] = 0;             array[1] = 0;             num -= 2;             qsort(array, len, sizeof(int),comp);             total_tm = count_time(array, len, num);         }     }     return total_tm; }