2025年中山大学计算机考研复试机试真题
2025年中山大学计算机考研复试上机真题
历年中山大学计算机考研复试上机真题
历年中山大学计算机考研复试机试真题
更多学校题目开源地址:https://gitcode.com/verticallimit1/noobdream
N 诺 DreamJudge 题库:输入 “学校名称” 即可筛选该校历年机试真题,题目均在考纲范围内,按难度自动排序。还可搭配《计算机考研机试攻略》刷题,书中题目可通过题号直接在题库中查找。

不连续1的子串
题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb
串只包含0或者1,给定一个数字,输出以此为长度的01串不含连续1的串的个数。
如输入3,则输出5,因为长度为3的01串不含连续1的串包括000, 001, 010, 100, 101。
输入输出格式
输入描述:
输入一个整数N(N<=20)
输出描述:
输出结果
输入输出样例
输入样例#:
复制
3
输出样例#:
复制
5
代码一
- #include<iostream>
- using namespace std;
- int main(){
- int num[22];
- num[1]=2;
- num[2]=3;
- for(int i=3;i<=20;i++){
- num[i]=num[i-1]+num[i-2];
- }
- int n;
- cin>>n;
- cout<<num[n]<<endl;
- return 0;
- }
代码二
- #include <iostream>
- #include <cstring>
- #include <vector>
- using namespace std;
- int main(){
- int n;
- cin >> n;
- vector<vector<int>> dp(n, vector<int>(2));
- dp[0][0] = 1; // 尾0
- dp[0][1] = 1; // 尾1
- for (int i=1; i<n; i++){
- dp[i][0] = dp[i-1][0] + dp[i-1][1];
- dp[i][1] = dp[i-1][0];
- }
- int res = dp[n-1][0] + dp[n-1][1];
- cout << res;
- return res;
- }
代码三
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <iomanip>
- #include <set>
- #include <list>
- #include <string>
- #include <cmath>
- #include <stack>
- #include <map>
- #include <sstream>
- #include <queue>
- #include <bitset>
- using namespace std;
- int main() {
- int n;
- while (cin >> n) {
- if (n == 1||n==2) {
- cout << n + 1 << endl;
- continue;
- }
- vector<long long>dp(n + 1);
- dp[1] = 2; dp[2] = 3;
- for (int i = 3; i <= n; i++) {
- dp[i] = dp[i - 1] + dp[i - 2];
- }
- cout << dp[n] << endl;
- }
- return 0;
- }
546

被折叠的 条评论
为什么被折叠?



