报名第九次CCF认证,是为了能参加第二届的CCSP,做了一下题库里的C\C++模拟,发现真是够水了……

前三题,过于简单,不再赘述,发一下题目和对应答案~~~

出现次数最多的数

#include <iostream>
#include <algorithm>
#include <cstdio>using namespace std;const int MAXN = 1010;int S[MAXN];int main(int argc, const char * argv[])
{int n;cin >> n;for (int i = 0; i < n; i++){scanf("%d", S + i);}sort(S, S + n);int res = S[0], times = 1, res_ = S[0], times_ = 1;for (int i = 1; i < n; i++){if (S[i] == S[i - 1]){times_++;}else{res_ = S[i];times_ = 1;}if (times_ > times){res = res_;times = times_;}}cout << res << '\n';return 0;
}

ISBN号码

#include <iostream>
#include <cstdio>using namespace std;const int MAXN = 10;
const int MOD = 11;int ISBN[MAXN];
char X;int main(int argc, const char * argv[])
{scanf("%1d-%1d%1d%1d-%1d%1d%1d%1d%1d-%c",ISBN + 0, ISBN + 1, ISBN + 2, ISBN + 3, ISBN + 4, ISBN + 5,ISBN + 6, ISBN + 7, ISBN + 8, &X);int sum = 0;for (int i = 0; i < 9; i++){sum += ISBN[i] * (i + 1);}sum %= MOD;int num = X == 'X' ? 10 : X - '0';if (num == sum){cout << "Right\n";}else{cout << ISBN[0] << '-';cout << ISBN[1] << ISBN[2] << ISBN[3] << '-';cout << ISBN[4] << ISBN[5] << ISBN[6] << ISBN[7] << ISBN[8] << '-';if (sum == 10){cout << "X\n";}else{cout << sum << '\n';}}return 0;
}

最大的矩阵

#include <iostream>
#include <cstdio>using namespace std;const int MAXN = 1010;int h[MAXN];int main(int argc, const char * argv[])
{int n;cin >> n;for (int i = 0; i < n; i++){scanf("%d", h + i);}int res = 0;for (int i = 0; i < n; i++){int j, k;for (j = i - 1; j >= 0; j--){if (h[j] < h[i]){j++;break;}}if (j == -1){j++;}for (k = i + 1; k < n; k++){if (h[k] < h[i]){k--;break;}}if (k == n){k--;}int temp = (k - j + 1) * h[i];if (temp > res){res = temp;}}cout << res << '\n';return 0;
}

有趣的数

遇见这种问题,不用多想,百分之八九十就是dp,观察数位之间的关系,寻找状态转移方程,具体的状态转移方程看代码~~~不难理解。

#include <iostream>using namespace std;typedef long long ll;const int MAXN = 1010;
const ll MOD = 1e9 + 7;
const int MAXM = 6;ll dp[MAXN][MAXM];int main()
{int n;cin >> n;for (int i = 0; i < MAXM; i++){dp[0][i]=0;}/*6种状态* 0--剩013* 1--剩13* 2--剩01* 3--剩3* 4--剩1* 5--无*/for (int i = 1; i <= n; i++){int temp = i - 1;dp[i][0] = 1;dp[i][1] = (dp[temp][0] + dp[temp][1] * 2) % MOD;dp[i][2] = (dp[temp][0] + dp[temp][2]) % MOD;dp[i][3] = (dp[temp][1] + dp[temp][3] * 2) % MOD;dp[i][4] = (dp[temp][1] + dp[temp][2] + dp[temp][4] * 2) % MOD;dp[i][5] = (dp[temp][3] + dp[temp][4] + dp[temp][5] * 2) % MOD;}cout << dp[n][5] << endl;return 0;
}

I’m stuck!

这道题是常规的搜索题,思路就是dfs或者bfs,并且需要满足两个条件,而这两个条件我们可以分别先满足,然后把同时满足的计数,一般做法是先正向dfs一遍,然后把所有S能达到的方格再dfs一遍,但是这样的话时间代价太高,不知道会不会超时,比较快捷的解法就是先正向,然后反向,正向十分简单,反向比较难想一些,考到逆向思维,你需要判断是否可以原路折返回去,而这里就需要判断上一步的格子和这一步的格子之间的连通性,代码写起来比较费劲儿,需要考虑很多种情况,具体的还是看代码吧~~~

#include <iostream>
#include <cstring>using namespace std;const int MAXR = 55;
const int MAXC = MAXR;
const int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};int R, C;
char map[MAXR][MAXC];
int visS[MAXR][MAXC];
int visT[MAXR][MAXC];
bool flag;void dfsS(int x, int y)
{visS[x][y] = 1;switch (map[x][y]){case '+':for (int i = 0; i < 4; i++){if (x + dir[i][0] >= 0 && x + dir[i][0] < R &&y + dir[i][1] >= 0 && y + dir[i][1] < C &&map[x + dir[i][0]][y + dir[i][1]] != '#' &&visS[x + dir[i][0]][y + dir[i][1]] == 0){dfsS(x + dir[i][0], y + dir[i][1]);}}break;case '-':for (int i = 2; i < 4; i++){if (x + dir[i][0] >= 0 && x + dir[i][0] < R &&y + dir[i][1] >= 0 && y + dir[i][1] < C &&map[x + dir[i][0]][y + dir[i][1]] != '#' &&visS[x + dir[i][0]][y + dir[i][1]] == 0){dfsS(x + dir[i][0], y + dir[i][1]);}}break;case '|':for (int i = 0; i < 2; i++){if (x + dir[i][0] >= 0 && x + dir[i][0] < R &&y + dir[i][1] >= 0 && y + dir[i][1] < C &&map[x + dir[i][0]][y + dir[i][1]] != '#' &&visS[x + dir[i][0]][y + dir[i][1]] == 0){dfsS(x + dir[i][0], y + dir[i][1]);}}break;case '.':if (x + 1 < R && map[x + 1][y] != '#' && visS[x + 1][y] == 0){dfsS(x + 1, y);}break;}
}void dfsT(int x, int y, int preX, int preY)
{if (visT[x][y] || map[x][y] == '#'){return ;}if (map[x][y] == '.' && preX == x + 1 && preY == y){visT[x][y] = 1;}else if (map[x][y] == '-' && preX == x){visT[x][y] = 1;}else if (map[x][y] == '|' && preY == y){visT[x][y] = 1;}else if (map[x][y] == '+'){visT[x][y] = 1;}if (visT[x][y] == 0){return ;}if (x - 1 >= 0){dfsT(x - 1, y, x, y);}if (x + 1 < R){dfsT(x + 1, y, x, y);}if (y - 1 >= 0){dfsT(x, y - 1, x, y);}if (y + 1 < C){dfsT(x, y + 1, x, y);}
}int main(int argc, const char * argv[])
{memset(visS, 0, sizeof(visS));memset(visT, 0, sizeof(visT));cin >> R >> C;int xS = 0, xT = 0, yS = 0, yT = 0;for (int i = 0; i < R; i++){scanf("%s", map[i]);for (int j = 0; j < C; j++){if (map[i][j] == 'S'){xS = i;yS = j;map[i][j] = '+';}else if (map[i][j] == 'T'){xT = i;yT = j;map[i][j] = '+';}}}dfsS(xS, yS);if (visS[xT][yT] == 0){cout << "I'm stuck!\n";return 0;}dfsT(xT, yT, xT, yT);int counts = 0;for (int i = 0; i < R; i++){for (int j = 0; j < C; j++){if (map[i][j] != 'S' && map[i][j] != 'T' &&visS[i][j]  && !visT[i][j]){counts++;}}}std::cout << counts << '\n';return 0;
}

前三题就是秀智商的问题,不算笨的人30分钟内就能搞定前三题,拿到300分,第四题、第五题需要略微思考些,就算拿不全分,也不至于0分~~~

CCF模拟题-1~5相关推荐

  1. I'm stuck! ccf模拟题。

    ccf模拟题. I'm stuck! 时间限制: 1.0s 内存限制: 256.0MB 问题描述 给定一个R行C列的地图,地图的每一个方格可能是'#', '+', '-', '|', '.', 'S' ...

  2. CCF模拟题——有趣的数详解

    马上就要参加CCF认证考试了,然后最近就在做CCF上的模拟题,我选的语言是java,然后遇到第四题--有趣的数,当时一看题目,卧槽太TM简单了,比第一题和第二题还简单,高兴死我了,然后我就做呗,然后我 ...

  3. CCF 模拟题 有趣的数 (数位DP)

    问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...

  4. CCF 模拟题,公共钥匙盒

    题目描述: 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒 ...

  5. CCF CSP 201609-2 火车购票(C++语言100分)[简单模拟题]

    1. 问题链接:CCF 201609-2 火车购票 试题编号: 201609-2 试题名称: 火车购票 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 请实现一个铁路购票系统的 ...

  6. 重庆社区计算机考试题库,2020重庆社区工作者考试题库:模拟题100题(64)

    2020年重庆社区工作者考试正在如火如荼的开展,为了帮助大家做好备考工作,社区工作者考试模拟题,希望考生们能与小编共同坚持--每日一练! 2020年社区工作者考试模拟题100题64 1. 在市场经济条 ...

  7. 计算机一级考试模拟题函数,2015年计算机一级考试模拟题(四)

    2015年计算机一级考试模拟题(四) 请用Word 2003对考生文件夹下WORD.DOC文档中的文字进行编辑.排版和保存,具体要求如下: (1)将标题段("十年后的家电")文字设 ...

  8. java格林认证_Java考试格林模拟题

    Java考试格林模拟题 question 14) which of the following lines of code will compile without error 1) int i=0; ...

  9. 计算机应用a级考试,四川省职称计算机应用能力考试A级模拟题

    内容简介: 四川省职称计算机应用能力考试A级模拟题 一.单选题: 1.软件工程管理是指对(C)一切活动的管理. A.软件计划期 B.高级决策层 C.软件生命期 D.软件计划和开发期 2.从一个长度为n ...

最新文章

  1. 小编带你进入强如 Disruptor 也发生内存溢出?
  2. c# 重写override
  3. rabbitmq实战指南_RabbitMQ之脑裂
  4. Linux shell 读取一行
  5. 【BZOJ3174】【codevs25442075】拯救小矮人,DP+贪心
  6. mysql 表上线_腾讯云上线数据库 MySQL 8.0 版
  7. VMware Workstation下减小ubuntu系统占用系统盘大小
  8. hyperledger fabric cryptogen: command not found
  9. TX2(linux系统、Ubuntu系统)输入法不显示拼音候选框、下拉框
  10. 多人协作共享画板——多人画板的bug及分析
  11. 32 《奇特的一生》 -豆瓣评分8.5
  12. 【技术科普】区块链世界也存在多元宇宙
  13. python股票交易时间_python 判断是否股市交易日
  14. 人工神经网络模型定义,人工智能神经网络模型
  15. 艺术科学,物物皆通 ——观《达·芬奇的人生密码》有感
  16. Github 标星 4w+,如何用 Python 实现所有算法
  17. 智能手机无线充台灯触摸芯片-DLT8T02S
  18. android sdk linux 离线包,android sdk离线安装
  19. CFA FRM CPA三证同持,你做到了吗?
  20. pytest——04 pytest.mark.xxx

热门文章

  1. 阿里巴巴本地生活——上海饿了么配送一面(一小时)
  2. dms3.0 mysql_DMS 3.0 导入数据库出错-问答-阿里云开发者社区-阿里云
  3. 什么是微信公众号矩阵模式?
  4. 【渝粤题库】陕西师范大学292951 公司金融学Ⅱ 作业(专升本)
  5. 《金融学》期末小题库
  6. 浅谈网站的logo设计
  7. Ubuntu 18.04 桌面卡死
  8. JS获取按键的代码,Js如何屏蔽用户的按键,Js获取用户按键对应的ASII码(兼容所有浏览器)...
  9. clickhouse表引擎-合并树系列
  10. php代码审计靶场,RIPS --代码审计靶场(第一关)-华盟网