csp-j 模拟题2
试题链接 https://ks.wjx.top/jq/92546297.aspx
阅读一
#include <bits/stdc++.h>
using namespace std;int main() {string s;char s1[100];int len, j = 0;cin >> s;len = s.size();//将 s1 数组清空 memset(s1, 0, sizeof(s1)); for (int i = 0; i < len; i ++) {if (i % 2 == 0)if ((s[i] >= 'A' && s[i] < 'Z') || (s[i] >= 'a' && s[i] < 'z')) {s1[j] = s[i] + 1;++ j;}}cout << s1 << endl;return 0;
}/*
T: 程序限定了,s1 字符串里只能有'B'~'Z',或者'b'~'z'
F: 'Z'和'z'后面的字符是标点符号
F: 如果不对 s1 清零,输出时可能有多余字符
F: 不一定,要看第 12 行的条件是否满足 B: 最多为原长度的一半
B: 'A'~'Y'右移一位不可能出现字母'A',同理不可能出现字母'a' */
阅读二
#include <bits/stdc++.h>
using namespace std;int main() {int a[1001], i, j, t, n;for (i = 0; i <= 1000; i ++) a[i] = 0;scanf("%d", &n);for (i = 1; i <= n; i ++) {scanf("%d", &t);a[t] ++;}//从后往前遍历 for (i = 1000; i >= 0; i --) //数字 i 出现了几次,就输出几次 for (j = 1; j <= a[i]; j ++)printf("%d ", i);return 0;
}/*
这个代码是计数排序 F: 应该是从大到小输出
F: 其实是看不出来谁先谁后的
T: 改成 < 后,输出的数量比实际数量少 1
F: 这样就变成了从小到大输出C: j > 1,因此输出数量也是比实际数量少 1;输入数据中没有重复的数字
D: ++a[t]和a[t]++在这里没有区别;a[t++]只是变量 t 增加,a 数组的值没有发生变化 */
阅读三
#include <bits/stdc++.h>
using namespace std;const int maxn = 500000, INF = 0x3f3f3f3f;
int L[maxn/2+2], R[maxn/2+2];void unknown(int a[], int n, int left, int mid, int right) {//举例:left=2, mid=3, right=4 int n1 = mid - left, n2 = right - mid;//将a[2]放到 L 数组 for (int i = 0; i < n1; i ++)L[i] = a[left + i];//将a[3]放到 R 数组 for (int i = 0; i < n2; i ++)R[i] = a[mid + i];L[n1] = R[n2] = INF;int i = 0, j = 0;//注意看,合并后的 a 数组里只有 a[2]和 a[3] for (int k = left; k < right; k ++) { if (L[i] <= R[j])a[k] = L[i ++];else a[k] = R[j ++];}
}//要排序的数是从 a[left] ~ a[right-1]
void unknownsort(int a[], int n, int left, int right) {//举例:left=2, right=4, mid=3 if (left + 1 < right) { int mid = (left + right) / 2;//左边一组: (a,n,2,3),实际上只有a[2] unknownsort(a, n, left, mid);//右边一组: (a,n,3,4),实际上只有a[3]unknownsort(a, n, mid, right);//参数是(a,n,2,3,4),实际上只将a[2]和a[3]合并unknown(a, n, left, mid, right);}
}int main() {int a[maxn], n;cin >> n;//输入从 a[0] ~ a[n-1] for (int i = 0; i < n; i ++) cin >> a[i];unknownsort(a, n, 0, n); for (int i = 0; i < n; i ++) {if (i) cout << " ";cout << a[i];}cout << endl;return 0;
}/*
F: 修改之后,a 数组末尾会多出一个数字
F: 修改前:left=2 right=3就不再分解了,开始归并修改后:left=2 right=3,mid=2;再分解一次,有一组还是left=2,right=3,不断循环,最后栈溢出
F: 归并时间复杂度低,且稳定
T: 不会越界C 归并
B 分治
*/
完善一
#include <bits/stdc++.h>
using namespace std;int main() {int n;while (cin >> n && n != 0) {int tj[1001], king[1001], count = 0;int tj_min = 0, tj_max = n - 1;int king_min = 0, king_max = n - 1;for (int i = 0; i < n; i ++) cin >> tj[i];for (int i = 0; i < n; i ++) cin >> king[i];//从小到大排序 sort(tj, tj + n); sort(king, king + n);when (n --) {//如果田忌的快马比齐王的快马快, 赢一次 //各自用掉一匹快马 if (tj[tj_max] > king[king_max]) {count ++;tj_max --;king_max --;}//如果田忌的快马比齐王的快马慢, 输一次 //田忌不如用慢马,去和齐王的快马比 else if (tj[tj_max] < king[king_max]) {count --;tj_min ++;king_max --;}//如果两人的快马一样快 else {//如果田忌的慢马比齐王的慢马快,赢一次//各自用掉一匹慢马 if (tj[tj_min] > king[king_min]) {count ++;tj_min ++;king_min ++;}//如果田忌的慢马赢不了齐王的慢马else {//反正要输,不如输给齐王的快马if (tj[tj_min] < king[king_max]) //Acount --;tj_min ++;king_max --; //A}} } cout << count * 200 << endl; }return 0;
}
完善二
#include <iostream>
#include <cstdio>
using namespace std;int mymax = 10000;
int f[4][2] = {{-1,0}, {1,0}, {0,-1}, {0,1}};
int a[20][20], v[20][20], v1[20][20];
int l = 1;
int n;bool check(int x1, int y1) {//出界 if (x1 < 0 || x1 >= n || y1 < 0 || y1 >= n) return false;//不能到的地方,或者是曾经到过的地方 if (a[x1][y1] == 1 || v[x1][y1] > 0) return false;return true;
}void dfs(int x, int y) {//走到右下角,找到出口 if (x == n - 1 && y == n - 1) {//打擂台,找最少的步数 if (l < mymax) {mymax = l;memcpy(v1, v, sizeof(v1));}return;}//遍历4个方向 for (int k = 0; k < 4; k ++) {int x1, y1;x1 = x + f[k][0]; y1 = y + f[k][1];if (check(x1, y1)) {v[x1][y1] = k; //记录方向 l ++; //步数 +1 dfs(x1, y1);l --; //回溯 v[x1][y1] = 0; //回溯 } }
}int main() {cin >> n;for (int i = 0; i < n; i ++) {for (int j = 0; j < n; j ++)cin >> a[i][j];}//从左上角开始搜索 dfs(0, 0);int d = v1[n-1][n-1];int x = n - 1, y = n - 1;int k;//q 数组用来反向记录移动路径 int qn[400][2];//终点的坐标 qn[0][0] = n - 1;qn[0][1] = n - 1;for (k = 1; ; k ++) {x = x - f[d][0];y = y - f[d][1];//倒数第 1 步,倒数第 2 步,倒数第 3 步...... qn[k][0] = x;qn[k][1] = y;d = v1[x][y];//回撤到起点 if (x == 0 && y == 0) break;}for (int i = k; i >= 0; i --)cout << qn[i][0] << "," << qn[i][1] << endl; return 0;
}
csp-j 模拟题2相关推荐
- 计算机csp考试模拟题,CSP-S初赛模拟题笔记(二)
CSP-S 2019 RP++! 众所周知,NOIP尸体尚热,亡魂未散,CCF开办了CSP-S 2019初赛模拟赛. 这是我瞎写的第二份试卷题解,顺便复习.(什么?第一份?好难的!) 单选题(1)某计 ...
- CCF CSP 201609-2 火车购票(C++语言100分)[简单模拟题]
1. 问题链接:CCF 201609-2 火车购票 试题编号: 201609-2 试题名称: 火车购票 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 请实现一个铁路购票系统的 ...
- CSP认证201612-3 权限查询[C++题解]:模拟题、结构体、set、有点复杂
题目分析 来源:acwing 分析:这样的模拟题,主要难在建模,需要思考用什么来存储. 这里用一个结构体来存权限.用哈希表来存<角色,权限结构体>的映射,当然权限结构体存在set中,需要去 ...
- csp模拟题-炉石传说
题目 试题编号: 201609-3 试题名称: 炉石传说 时间限制: 1.0s 内存限制: 256.0MB 问题描述: <炉石传说:魔兽英雄传>(Hearthstone: Heroes o ...
- CSP-J CSP-S 初赛模拟题
2019 CSP-J/S第一轮各省分数线统计与分析(含浙江省) 家长帮 CSP-J/S2019第二轮入门级一等各省评级分数线 CSP-J/S2019第二轮入门级一等各省评级分数线_自主选拔在线 CSP ...
- I'm stuck! ccf模拟题。
ccf模拟题. I'm stuck! 时间限制: 1.0s 内存限制: 256.0MB 问题描述 给定一个R行C列的地图,地图的每一个方格可能是'#', '+', '-', '|', '.', 'S' ...
- java格林认证_Java考试格林模拟题
Java考试格林模拟题 question 14) which of the following lines of code will compile without error 1) int i=0; ...
- 1 23 456c语言,2014年计算机二级考试C语言模拟题(1)
2014年计算机二级考试C语言模拟题(1) 21.下列程序的运行结果为( ). #include main() {struct date {int year,month,day; }today; pr ...
- URAL 1993 This cheeseburger you don't need 模拟题
This cheeseburger you don't need 题目连接: http://acm.timus.ru/problem.aspx?space=1&num=1993 Descrip ...
- 《ACM国际大学生程序设计竞赛题解Ⅰ》——模拟题
这篇文章来介绍一些模拟题,即一类按照题目要求将现实的操作转换成程序语言. zoj1003: On every June 1st, the Children's Day, there will be a ...
最新文章
- 标记meta http-equiv = X-UA-Compatible content = IE=edge,chrome=1
- linux考试基础知识测验
- CCNA配置试验之六 标准ACL和扩展ACL的配置
- 字符编码笔记:ASCII,Unicode和UTF-8(转)
- Ubuntu18.04解决sudo执行慢的问题
- 交叉编译cross compiling
- EMOS1.6下的php支持GD库
- 数字图像相关(DIC)原理与应用
- 如何查计算机版本,如何查看电脑ie浏览器版本呢
- 河南科技大学Oracle作业,机械制图作业集第四章答案河南科技大学.ppt
- mybatis开启日志打印
- 用友U9 BOM全阶展开 代码如下
- JS判断是PC端还是WAP端
- SiamFC:用于目标跟踪的全卷积孪生网络 fully-convolutional siamese networks for object tracking
- idea配置springboot
- android手机刷win10吗,有哪些手机可以刷win10系统?Android机上将可刷Win10?
- 小猪佩奇用计算机怎么弹,小猪佩奇第一季学习笔记计算机软件及应用IT计算机专业资料-小猪.pdf...
- 【DevOps】Jenkins:配置jenkins 流水线/多分支流水线任务构建成功通知企业微信@相关人
- Linux hex文件编辑器,全网最全Linux的十大十进制编辑器,要接触Linux的你摆脱不了...
- 梦回传奇战网服务器存档修改,梦回传奇单机版(backmir)问题集锦