读书人

只求测试数据 C语言 编程,该如何处

发布时间: 2012-10-20 14:12:47 作者: rapoo

只求测试数据 C语言 编程
题目:

http://icpc.ahu.edu.cn/OJ/Problem.aspx?id=2

这是我的代码:

C/C++ code
#include<stdio.h>int search_max(double a[],int n){    int j,max=0;    for(j=1;j<n;j++)        if(a[max]<a[j])            max=j;        return(max);}int main(){    int M,N,max,time,i;    int a[21][2];    double perv[20],val;    while(scanf("%d%d",&M,&N)!=EOF)    {        time=0;        val=0;        i=-1;    while(++i,scanf("%d%d",&a[i][0],&a[i][1]),a[i][0]);     for(i=0;i<M;i++)        perv[i]=(double)a[i][1]/a[i][0];    i=M;    while(i--)    {        max=search_max(perv,M);        if(time+a[max][0]>N) break;         time+=a[max][0];        val+=a[max][1];        perv[max]=0;    }    val+=perv[max]*(N-time);    printf("%.2f\n",val);    }        return 0;}




提交后Runtime Error[Nonzero Return Value]

一般的数据我试过都可以

只求特殊的测试数据了。谢谢各位!

[解决办法]
数据大了肯定超时.................你每次取最大都要将没有取的数据从头到尾扫一篇。。。。。。还不如开始的时候就排个序
[解决办法]
RE无非几种情况,数组越界,数组下标为负的。感觉你只用了一个变量i,肯定出在i上了,建议不要为了节省这点内存,多用几个。
[解决办法]
背包问题。
[解决办法]
search_max函数有问题,应该这样些:

int search_max(double a[], int n)
{
int i, max;

if (n <= 0) return -1;
max = 0;
for (i = 1; i < n; i++) {
if (a[max] < a[j]) max = j;
}
return max;
}

读书人网 >C语言

热点推荐