csp习题
疯狂炼丹
这个作者很懒,什么都没留下…
展开
-
csp201412-2
分析:在Z字形扫描中,共有4种移动方向:向右、向左下、向下以及向右上。扫描的第一步向右走,接下来按照如下规则移动:1.当前向右移动。若碰到下边界,则下一步向右上方走;否则,下一步向左下方走。2.当前向左下方移动。若碰到下边界,则下一步向右走;若碰到左边界,则下一步向下走;否则,继续向左下方走。3.当前向下移动。若碰到右边界,则下一步向左下方走;否则,下一步向右上方走。4.当前向右上方移...原创 2019-12-05 01:53:37 · 312 阅读 · 0 评论 -
csp201503-1
这里需要注意一下,数组要定义为全局变量,因为放在全局的时候是开辟在静态存储区上,通过 new 的话是放在堆内存上的,而直接在局部定义的是放在栈内存上的,栈内存比较小,一开始我直接定义在局部,才得了80分,长教训!对于较大的数组定义为全局变量#include<iostream>using namespace std;int a[1010][1010];int main() { ...原创 2019-12-05 01:49:47 · 129 阅读 · 0 评论 -
csp201403-2
首先利用一个结构体,point和number分别是位置和编号,注意一下,对位置更改的时候只对当前位置和优先级比当前位置高的位置进行更改数组传参的总结如下:方式 1形式参数是一个指针:void myFunction(int *param){...}方式 2形式参数是一个已定义大小的数组:void myFunction(int param[10]){...}方式 3...原创 2019-12-03 16:33:34 · 217 阅读 · 1 评论 -
csp201312-2
注意余数为10的时候识别码为X#include <iostream>using namespace std;int main() { char a[13], b[13]; for (int i = 0; i < 13; i++) { cin >> b[i]; a[i] = b[i] - '0'; } int sum = a[0] * 1 + a[...原创 2019-12-03 10:47:59 · 194 阅读 · 0 评论 -
csp201312-1
首先用map记录每个数字出现的次数,map是自动对key值进行排序的,并不对value值进行排序,构建一个vector,存放的类型是pair<int,int>,然后将map中的key和value依次存入vector中,最后将vector中的元素进行排序,直接输出第一个元素即可pair类的主要操作:pair<T1,T2> p1;pair<T1,T2> p1(...原创 2019-12-03 10:21:41 · 149 阅读 · 0 评论 -
csp201604-2
模拟方块的下落,如果方块覆盖到1或者碰到底部,即停止。关键:从样例可以看到,方块的最后一行可以越出棋盘,因此棋盘的边界可以进行适当的延伸(扩大二维数组),处理碰到底部的问题,解决方案是在底部加上一个全1的边框。#include <stdio.h>int board[20][15];int block[4][4];int main() { for (int i = 1; ...转载 2019-11-30 21:49:27 · 178 阅读 · 0 评论 -
csp201609-2
定义一个二维数组,然后在座位数为1、2、3、4、5的情况下进行特判,属于直接暴力的形式#include <iostream>using namespace std;int main() { int a[20][5]; for (int i = 0; i < 20; i++) for (int j = 0; j < 5; j++) a[i][j] = 0;...原创 2019-11-30 19:29:30 · 140 阅读 · 0 评论 -
csp201609-1
直接用绝对值函数abs(),注意加上头文件#include #include <iostream>#include <cmath>using namespace std;int main() { int n; cin >> n; int a[n]; for (int i = 0; i < n; i++) cin >> a[i...原创 2019-11-30 19:26:13 · 76 阅读 · 0 评论 -
csp201703-2
此题利用一个vector即可解决问题,首先从1到n压入vector中,然后根据出队或者入队,利用erase函数和insert函数,利用erase函数可以删除指定位置的元素,利用insert函数可以在指定位置插入指定元素,注意在当前位置插入元素后,后面的元素依次往后移基本操作:(1)头文件:#include.(2)创建vector对象:vector vec;(3)尾部插入数字:vec.pus...原创 2019-11-29 20:52:27 · 117 阅读 · 0 评论 -
csp201703-1
注意是将编号最小的分出去,而并不是重量最小的,如果将重量最小的分出去的话只有80分,注意审题!#include<iostream>using namespace std;int main() { int n, k; cin >> n >> k; int a[n]; for (int i = 0; i < n; i++) cin >&...原创 2019-11-29 20:24:57 · 116 阅读 · 0 评论 -
CSP201712-2
利用队列,只有当队列首等于队列尾的时候跳出循环,最后输出队列首的元素#include<iostream>#include<queue>using namespace std;int main(){ int n, k; cin >> n >> k; queue<int> a; for (int i = 1; i <=...原创 2019-11-27 20:59:27 · 65 阅读 · 0 评论 -
CSP201712-1
直接双重for循环AC,注意使用abs绝对值函数的时候要包含头文件#include#include<iostream>#include<cmath>using namespace std;int main(){ int n; cin >> n; int a[n]; for (int i = 0; i < n; ++i) cin >...原创 2019-11-27 20:57:32 · 65 阅读 · 0 评论 -
csp201903-4
csp201903-4一、getline()数的总结getline()函数是一个比较常见的函数,用这个函数完成读入一行数据在C++中getline()函数的有两种,一种是在头文件中,是食istream类的成员函数,另一种在头文件中,是普通函数第一种:在中的getline()函数有两种重载形式:istream&getline(char* s,streamsize n);istre...原创 2019-07-23 15:46:05 · 223 阅读 · 0 评论 -
csp201903-3
csp201903-3#include <iostream>#include <cstdio>#include <cstring>using namespace std;struct DiskData{ unsigned char * data; void analyseStr(string str)//解析字符串 { data = n...转载 2019-07-20 21:57:18 · 255 阅读 · 0 评论