C语言OJ题错误代码Output Limit Exceed,求大神改正一下
解决时间 2021-01-25 07:49
- 提问者网友:几叶到寒
- 2021-01-25 03:36
Description
计算a+b,0<=a,b<1000。
Input
输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。
Output
每行输出一个a+b的值,顺序与输入对应。每个格式样例之间用一个空行分隔开。
Sample Input
1 2
10 20
15 35
Sample Output
3
30
50
我写的代码为
#include
#include
int main()
{
int a,b;
for (;;)
{
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
break;
}
for (;;)
{
scanf("%d%d",&a,&b);
printf("\n%d\n",a+b);
}
return 0;
}
虽然在codeblocks运行成功,但是提交出现错误,求解释以及改正
最佳答案
- 五星知识达人网友:上分大魔王
- 2021-01-25 03:55
#include
#include
int main()
{
int a,b;
for (;scanf("%d%d",&a,&b)!=EOF;)
{
printf("%d\n",a+b);
}
return 0;
}
全部回答
你这个需要剪枝,下面我写这个是做了简单的剪枝的。。。
虽然不敢保过,但也算个思路给你吧。
#include
int cont=7;
int maxcount=1000000;
int miane[cont]={100,50,20,10,5,2,1};
int count=0;
int sum=0;
void back(int ci,int left);
int main()
{
back(0,100000);
printf("%d\n",sum);
return 0;
}
void back(int ci,int left)
{
int i;
if(ci==cont)
{
return;
}
for(i=0;left-i*miane[ci]>=0;i++)
{
if(i>0)
{
count++;
}
if(count>maxcount)
{
break;
}
if(left-i*miane[ci]==0&&i!=0)
{
sum++;
}
back(ci+1,left-i*miane[ci]);
}
count-=i-1;
}
我要举报
大家都在看
推荐资讯