题目描述:
A、B两个人玩抢7游戏,游戏规则为:
A先报一个起始数字 X(10 ≤ 起始数字 ≤ 10000),B报下一个数字 Y (X - Y < 3),A再报一个数字 Z(Y - Z < 3),以此类推,直到其中一个抢到7,抢到7即为胜者;
在B赢得比赛的情况下,一共有多少种组合?
输入描述:
起始数字 M
10 ≤ M ≤ 10000
如:
100
输出描述:
B能赢得比赛的组合次数
示例1:
输入
10
输出
1
C++ 源码:
#include <iostream>
#include <vector>
using namespace std;
void findSeven(int M) {
// 初始化两个动态数组存储大整数
vector<int> A(10001, 0);
vector<int> B(10001, 0);
A[M] = 1;
// 执行给定的操作
for (int i = M; i >= 7; --i) {
for (int j = 1; j <= 2; ++j) {
A[i - j] += B[i];
B[i - j] += A[i];
}
}
// 输出结果
cout << B[7] << endl;
}
int main() {
// 使用C++的标准输入处理大整数
int M;
cin >> M;
findSeven(M);
system("pause");
return 0;
}