历届试题 奇怪的比赛
2017-02-20 11:57
162 查看
某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:
每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。
每位选手都有一个起步的分数为10分。
某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?
如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011 就是可能的情况。
你的任务是算出所有可能情况。每个答案占一行。
答案写在“解答.txt”中,不要写在这里!
思路:
递归条件是做题总数不能大于10题
列举做对和做错情况
当分数为100题数为10题就为1个正确的解
代码:
#include<iostream>
using namespace std;
int s[11]={0},cnt=0;
void dg(int a,int d)
{
if (d>10)
return ;
if(a==100&&d==10)
{
cnt++;
for (int i=0;i<10;i++)
cout<<s[i];
cout<<endl;
}
s[d]=1;//做对的
dg(a*2,d+1);
s[d]=0;//做错的
dg(a-(d+1),d+1);
}
int main()
{
dg(10,0);
cout<<cnt;
return 0;
}
每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。
每位选手都有一个起步的分数为10分。
某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?
如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011 就是可能的情况。
你的任务是算出所有可能情况。每个答案占一行。
答案写在“解答.txt”中,不要写在这里!
思路:
递归条件是做题总数不能大于10题
列举做对和做错情况
当分数为100题数为10题就为1个正确的解
代码:
#include<iostream>
using namespace std;
int s[11]={0},cnt=0;
void dg(int a,int d)
{
if (d>10)
return ;
if(a==100&&d==10)
{
cnt++;
for (int i=0;i<10;i++)
cout<<s[i];
cout<<endl;
}
s[d]=1;//做对的
dg(a*2,d+1);
s[d]=0;//做错的
dg(a-(d+1),d+1);
}
int main()
{
dg(10,0);
cout<<cnt;
return 0;
}
相关文章推荐
- 蓝桥杯 历届试题 奇怪的比赛
- 黄金队列,汉诺塔,奇怪的比赛,第一个数字,割圆,最大数,矩形的交集和并集,趣味算式(第三届蓝桥杯Java本科预赛试题)
- 第三届蓝桥杯【省赛试题4】奇怪的比赛
- 蓝桥杯 历届试题 奇怪的分式
- 蓝桥杯 历届试题 奇怪的分式
- 蓝桥杯历届-奇怪的比赛
- 蓝桥杯【省赛试题4】奇怪的比赛
- 蓝桥杯 历届试题 奇怪的分式
- 2012年蓝桥杯【初赛试题】奇怪的比赛
- 2012_预赛_java_本科试题“奇怪的比赛”参考答案---田野上的稻草人
- 2012年蓝桥杯【初赛试题】奇怪的比赛
- 蓝桥杯历届-奇怪的比赛
- 2012蓝桥杯预赛试题本科c++奇怪的比赛
- 2012年蓝桥杯【初赛试题】奇怪的比赛
- 历届试题 小数第n位
- 历届试题 国王的烦恼
- 蓝桥- 历届试题 2013-10-19错误票据 输入技巧+排序
- 蓝桥杯 历届试题 回文数字
- 1596:历届试题 带分数
- 蓝桥杯 历届试题 合根植物 Java并查集