本文主要是介绍面试题83:运动员打靶,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
一个射击运动员打靶,靶一共有10环,连开10枪打中90环的可能性有多少种?请用递归算法编程实现。
思路:
用递归加回溯来做。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;int sum;
vector<int> store;
void Output() //打印
{for (int i = store.size()-1; i >= 0; i--){cout << store[i] << " ";}cout << endl;++sum;
}void Comput(int score, int num)
{if (score<0 || score>(num + 1) * 10) //退出递归 return;if (num == 0) //打到最后一次 {//store[num] = score;store.push_back(score);Output();store.pop_back();return;}for (int i = 0; i <= 10; i++) //没有出现上述情况,递归 {store.push_back(i);Comput(score - i, num - 1);store.pop_back();}
}int main()
{Comput(90, 9);cout << sum << endl;return 0;
}
这篇关于面试题83:运动员打靶的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!