c语言关于递归的问题一道蓝桥杯的问题:某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪:每位选手需要回答10个问题(
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/24 13:51:49
c语言关于递归的问题
一道蓝桥杯的问题:某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度.答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理).每位选手都有一个起步的分数为10分.某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示.例如:0010110011 就是可能的情况.你的任务是算出所有可能情况.每个答案占一行.
代码:#includeint a[11]={0};void f(int sum,int n);int main(void){ f(10,1); return 0;}void f(int sum,int n){ int i; if(sum==100&&n==11) { for(i=1;i100||n>=11||sum-n
一道蓝桥杯的问题:某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度.答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理).每位选手都有一个起步的分数为10分.某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示.例如:0010110011 就是可能的情况.你的任务是算出所有可能情况.每个答案占一行.
代码:#includeint a[11]={0};void f(int sum,int n);int main(void){ f(10,1); return 0;}void f(int sum,int n){ int i; if(sum==100&&n==11) { for(i=1;i100||n>=11||sum-n
![c语言关于递归的问题一道蓝桥杯的问题:某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪:每位选手需要回答10个问题(](/uploads/image/z/16267646-38-6.jpg?t=c%E8%AF%AD%E8%A8%80%E5%85%B3%E4%BA%8E%E9%80%92%E5%BD%92%E7%9A%84%E9%97%AE%E9%A2%98%E4%B8%80%E9%81%93%E8%93%9D%E6%A1%A5%E6%9D%AF%E7%9A%84%E9%97%AE%E9%A2%98%3A%E6%9F%90%E7%94%B5%E8%A7%86%E5%8F%B0%E4%B8%BE%E5%8A%9E%E4%BA%86%E4%BD%8E%E7%A2%B3%E7%94%9F%E6%B4%BB%E5%A4%A7%E5%A5%96%E8%B5%9B.%E9%A2%98%E7%9B%AE%E7%9A%84%E8%AE%A1%E5%88%86%E8%A7%84%E5%88%99%E7%9B%B8%E5%BD%93%E5%A5%87%E6%80%AA%EF%BC%9A%E6%AF%8F%E4%BD%8D%E9%80%89%E6%89%8B%E9%9C%80%E8%A6%81%E5%9B%9E%E7%AD%9410%E4%B8%AA%E9%97%AE%E9%A2%98%EF%BC%88)
#include<stdio.h>
int a[11]={0};
void f(int sum,int n);
int main(void)
{
f(10,1);
return 0;
}
void f(int sum,int n)
{
int i;
if(sum==100&&n==11)
{
for(i=1;i<=10;i++)
{
printf("%d",a[i]);
}
printf("\n");
return;
}
else if(n>=11||sum<=0) //这里有改动
{
return;
}
a[n]=1;
f(sum*2,n+1);
a[n]=0;
f(sum-n,n+1);
}
再问: 谢谢啦 你能再详细说一下为什么这样改就可以了呢? 费解
再答: 画蛇添足的判断条件
int a[11]={0};
void f(int sum,int n);
int main(void)
{
f(10,1);
return 0;
}
void f(int sum,int n)
{
int i;
if(sum==100&&n==11)
{
for(i=1;i<=10;i++)
{
printf("%d",a[i]);
}
printf("\n");
return;
}
else if(n>=11||sum<=0) //这里有改动
{
return;
}
a[n]=1;
f(sum*2,n+1);
a[n]=0;
f(sum-n,n+1);
}
再问: 谢谢啦 你能再详细说一下为什么这样改就可以了呢? 费解
再答: 画蛇添足的判断条件
某次演唱比赛,需要加试综合素质测试,每位参赛选手需回答三个问题,组委会为每位选手都备有10道不同的题目可供选择,其中有6
某次演唱比赛,需要加试综合素质测试,每位参赛选手需回答三个问题,组委会为每位选手都备有10道不同的题目可供选择,其中有6
某次演唱比赛,需要加试文化科学素质,每位参赛选手需加答3个问题,组委会为每位选手都备有10道不同的题目可供选择,其中有5
一道关于C语言函数的问题.
阅读文段,回答问题。 人类的低碳生活
问一道C语言的问题 关于逻辑运算
一道关于C语言求一元二次方程根的问题
(2010•崇明县二模)某校组织科普知识竞赛,每位选手需要回答三个问题.竞赛规则规定:每题回答正确得100分;回答不正确
一道有关C语言的简单问题
一道用C语言解决的问题
acm的一道c语言问题
一道C语言指针的问题