给我用c语言讲一下noip火柴棒那道题呗,谢啦~

 我来答
柴千雁5j
2013-07-23 · 超过14用户采纳过TA的回答
知道答主
回答量:43
采纳率:100%
帮助的人:41.3万
展开全部
我记得网上有解题报告,就不写完整的代码了;因为数据范围并不大,所以穷举就可以,定义int cnt()函数返回拼成一个数所需火柴数,然后双重循环: //count计数,n为火柴数 int i,j,count=0; for(i=0;i<=1000;i++) for(j=0;j<=1000;j++) { //加数所需火柴 int a=cnt(i),b=cnt(j); //和所需火柴 int c=cnt(i+j); //和可用火柴 int d=n-4-a-b; //若相等 if(c==d) count++; }
黄晓辉07
2013-07-23 · TA获得超过305个赞
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:198万
展开全部
#include <stdio.h>
int inbit (int ma);
int sort (int
cab);
main()
{
FILE * fp,* jp;
int m,n,i,j;
int
count=0,num=0,total;
fp=fopen("matches.in","r");
fscanf(fp,"%d",&m);
fclose(fp);
if(m<=20)
n=200;
else
n=1000;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
{
if(inbit(i)+inbit(j)+inbit(i+j)+4==m)
{
if(i==j)
num++;
else
count+=2;
}
}
total=count+num;
jp=fopen("matches.out","w");
fprintf(jp,"%d",total);
fclose(jp);
return
0;
}
int inbit (int ma)
{
int call;
if(ma<10)
call=sort(ma);
else
call=inbit(ma/10)+inbit(ma-(ma/10)*10);
return call;
}
int sort
(int cab)
{
switch (cab)
{
case 0
:
return 6;
break;
case 1 :
return 2;
break;
case 2 :
return
5;
break;
case 3
:
return 5;
break;
case 4 :
return 4;
break;
case 5 :
return
5;
break;
case 6 :
return 6;
break;
case 7
:
return 3;
break;
case 8 :
return 7;
break;
case 9 :
return
6;
break;
};
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式