李永乐 数学讲师
广受学生信赖的“线代王”
天任考研小编为大家整理了“24考研计算机C语言编程问题知识点:打靶问题”相关内容,为报考计算机专业的考生们提供指导。更多有关计算机考研干货可关注考研备考栏目。
问题描述:
射击运动员10枪打90环的打发有多少种?用一段程序实现,将每种打发打印出来。(每法成绩均为整数,且在0到10环之间,可为0环也可为10环)。
解题思路:使用递归思想
首先考虑到一共要打十枪。则可以分三种情况来考虑:
1.如果当前超过了十枪或者积分超过了给定值,则返回
2.如果当前为第十枪,判断后一枪的积分是否有可能达到给定值(0~10)
如果可以,可能值加1,然后返回;否则直接返回。
3.其他情况下,继续递归;
参考代码:
#include
using namespace std;
int sum=0;
int SCORE=90;
void compute(int num,int scores)
{
if(num<=0||scores>SCORE)return;
if(num==1)
{
if(scores+10>=SCORE)sum++;
return;
}
for(int i=0;i<=10;++i)
{compute(num-1,scores+i);}
}
int main()
{
compute(10,0);
cout<
return 0;
}
以上是天任考研小编为大家带来的“24考研计算机C语言编程问题知识点:打靶问题”希望考生们都能备考顺利,考上自己心仪的院校。