某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:

每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。

每位选手都有一个起步的分数为10分。

某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?

如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011 就是可能的情况。

你的任务是算出所有可能情况。每个答案占一行。

答案写在“解答.txt”中,不要写在这里!


  递归

  写一个递归,每一层递归代表一道题的对错情况,用一个数组存储之前所有题的对错情况。直到n==10时,计算当前成绩在当前题目对错情况下的得分是否为100。如果是100输出这种情况。

  答案


  代码

 #include <iostream>
using namespace std;
int a[];
void f(int n,int r,int s) //题号和答题结果(答对或答错)和当前的成绩
{
if(r){ //如果这道题答对
if(n== && s*==){
a[n]=r;
for(int i=;i<=;i++)
cout<<a[i];
cout<<endl;
return ;
}
else if(n== && s*!=)
return ;
else {
a[n]=r;
f(n+,,s*);
f(n+,,s*);
}
}
else{
if(n== && s-n==){
a[n]=r;
for(int i=;i<=;i++)
cout<<a[i];
cout<<endl;
return ;
}
else if(n== && s-n!=)
return ;
else{
a[n]=r;
f(n+,,s-n);
f(n+,,s-n);
}
}
}
int main()
{
f(,,);
f(,,);
return ;
}

Freecode : www.cnblogs.com/yym2013

最新文章

  1. C#多线程之线程同步篇1
  2. 【工匠大道】Git的使用总结
  3. ASP.NET MVC 4中如何为不同的浏览器自适应布局和视图
  4. OS X yosemite开启trim后,开机禁止符号,解决办法
  5. js抽奖
  6. halcon学习之产品检测
  7. RecyclerView使用完全解析
  8. IIS SMTP status codes
  9. Codeforces 479E. Riding in a Lift (dp + 前缀和优化)
  10. arcgis engine 开发之QI
  11. 【归并排序】【逆序数】HDU 5775 Bubble Sort
  12. C# 反射技术应用
  13. JavaScript原生对象总纲
  14. 跟bWAPP学WEB安全(PHP代码)--XPath注入
  15. lattice 作图 举例
  16. 2-Python3从入门到实战—基础之运算符
  17. Eclipse 配置Maven以及修改默认Repository
  18. java bulid path 和 WEB-INF/lib 下jar 包区别
  19. ORCLE报错解决(ora-01747:无效的用户.表.列,表.列)
  20. Spring的泛型依赖注入

热门文章

  1. python冒泡算法
  2. Android平台上直接物理内存读写漏洞的那些事
  3. j2ee高并发时使用全局变量需要注意的问题
  4. bbc mvn报错
  5. maven介绍 极客学院
  6. PHP实现AOP的雏形
  7. 点滴积累【C#】---将Excel数据导入到数据库
  8. 强大的响应式jQuery消息通知框和信息提示框插件
  9. Atitit.index&#160;manager&#160;api&#160;design&#160;索引管理api设计
  10. 实例探索Class文件