- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 CCF画图
题目样例思路这个题目的目的(意思)很简单,就是让我们采用上面给出的填充或者是划线的方法将对应的图形画出。主要有几个关键性的问题:怎么样进行填充字符?首先根据题目的意思我们可以直到,该填充的方式是向让我们从一个点开始,尽可能地向四周去延伸,直到碰到边界或者是遇到线(|.-,+),所以此处选择地算法是深度优先遍历DFS,具体地算法过程如下void dfs(vector<vector<char>>&g, int x, int y, char ch) { //偏移
2022-03-03 11:29:14
362
原创 CCF消除类游戏
图片思路此处使用的方法是模拟,开一个二维数组tag来记录,该点是否被消除,然后按照行是否有可消除元素和列是否有可消除元素来对二维数组进行遍历。当出现g[i][j]==g[i][j+1]&&g[i][j+1]==g[i][j+2]或者g[i][j]==g[i+1][j]&&g[i+1][j]==g[i+2][j]时,表示有三个连续颜色的块,则将tag中该位置置为1,因为会对每个元素进行遍历,所以不会出现遗漏的问题。代码#include <iostream>
2022-03-03 09:17:00
175
原创 CCF数位之和
题目思路这道题非常简单,依次相加即可,只需要注意数据范围101010^{10}1010即可。代码#include <iostream>using namespace std;typedef long long LL;LL num;int main() { cin >> num; int result = 0; while (num) { result = result + num % 10; num = num / 10; } cout <
2022-03-03 08:41:58
121
原创 CCF模板生成系统
题目## 思路这道题的意思是想让我们用下面的变量对应的值来替换模板中{{}}的值。需要解决的问题如下:需要将输入模板的每一行读入,因为存在空格的原因cin无法将整行读入,所以选用getline()来将整行读入,并使用vector来存储每一行。对于最后n的变量和对应值的读入,可以借用中间空格的存在,将最前面的变量直接使用cin来读入,对于变量的值,因为输入的数据中含有双引号,而双引号并不是我们想要的内容,所以对于变量后的值,此处采用的是getchar(),对其一个字符一个字符的读入。当字符第一次
2022-03-02 10:11:13
223
原创 CCF日期计算
题目思路这题也是比较简单,主要就是对闰年的考察,具体方法可以如下,对月份进行遍历,当d>当前月的天数时则表示不是在当前月,那就d-当前月的天数。直到d<=当前月的天数为止。代码#include <iostream>using namespace std;int months[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int year;int day;int isLeap(int y
2022-03-02 09:02:24
215
原创 CCF数列分段
题目思路简单题,只需要对数列进行枚举即可。此处result=1,从第二个元素开始枚举,遇到不到的result++。代码#include <iostream>using namespace std;const int N = 1010;int arr[N];int n;int main() { cin >> n; for (int i = 0; i < n; i++) { cin >> arr[i]; } int result = 1
2022-03-02 08:50:22
78
原创 CCF节日
题目思路只需要从1850年开始枚举,一直枚举到year2。在每一年中对每个月份进行枚举,当年份来到[year1,year2]取间,并且月份到达a月时,先求出a月1号是星期几(week),这个月的每一天进行遍历,当遍历当week==c-1,则count++(count用于记录,c在这个月出现的次数),当与要求的次数相同时输出,否则为不存在;对于a月1号星期几的求法? 因为已经知道1850年1月1号是星期一,所以度过的天数%7+1即可,此处的1是星期的下标0~6,星期2为下标
2022-03-01 10:37:28
157
原创 CCF数字排序
题目思路这是一道统计排序题目,此处使用map进行统计,利用优先队列priority_queue进行排序,后进行输出代码#include <iostream>#include <map>#include <queue>using namespace std;struct node { int key, count; bool operator < (const node &n) const { if (count == n.coun
2022-03-01 09:32:20
169
原创 CCF图像旋转
题目思想简单题,通过观察可以看出,原始矩阵逆时针旋转90,就是先遍历列(从大到小)后遍历行(从小到达)进行输出。代码#include <iostream>using namespace std;const int N = 1010;int n, m;int arr[N][N];int main() { cin >> n >> m; getchar(); for (int i = 1; i <= n; i++) { for (int j
2022-03-01 08:51:51
134
原创 CCF 集合竞价
题目思想没太读懂题目的意思。除了几条对字符串的解释之外,有几个点是解题的关键。此时的开盘成交量为出价至少为p0的买单的总股数和所有出价至多为p0的卖单的总股数之间的较小值。----->最后输出的应该是两者的最小值。你的程序需要确定一个开盘价,使得开盘成交量尽可能地大,如果有多个符合条件的开盘价,你的程序应当输出最高的那一个。 —>输出成交量尽量大的一个,在成交量相同的情况下,成交价尽量大。代码#include <stdio.h>#include <cst
2022-02-28 10:49:38
269
原创 CCFZ字形扫描
题目思想规律首先通过画图我们可以看出一些规律每一对角线行(下面简称行)上的点的横纵坐标之和为定值,就比如(1,1)所在的行的 行号i为2(此处用横纵坐标之和作为行号),当我们知道一个点的横坐标j的时候的时候就可以求出纵坐标i-j.通过对行号的观察可以发现当行号为偶数的时候都是从向右上去遍历,当行号为奇数的时候都是向左下去遍历思想为了将规则进行简化并且统一,我们将遍历的范围进行扩大在扩大之后遍历规则就变为了行号为偶数时向右上遍历,此时纵坐标j可以从1开始向右上去遍历,此时的横坐标
2022-02-28 09:52:13
571
原创 CCF门禁系统
题目思路该题是一道非常简单的送分题,只需要将每次出现的次数记录下来在输出就好,此处使用的是哈希表unordered_map来进行存储。代码#include <iostream>#include <unordered_map>using namespace std;int n;int main() { cin >> n; getchar(); unordered_map<int, int>map; int temp; for (in
2022-02-28 08:36:27
82
原创 CCF命令行选项
题目思路题目略显复杂,但是读完之后觉得题目的意思就是对于命令行的选项进行提取,有参数的提取最后一个输入的参数,遇到非法的选项时,就停止对该命令的分析。本题目考虑的是对字符串的处理能力。具体的操作都写在代码的注释中了。代码#include <iostream>#include <cstring>#include <sstream>#include <vector>using namespace std;/* 思路: 该题目主要考察对字
2022-02-27 10:24:43
215
原创 字符串匹配
题目思路KMP使用C++ find()函数代码KMP方法/*Created by LZJ on 2022/2/24. 字符串匹配问题*/#include<stdio.h>#include<string.h>#define N 110//next数组void getNext(int *Next,char *str){ int j=0; Next[0]=0; for(int i=1;i<strlen(str);i++)
2022-02-24 10:38:19
314
原创 CCF画图
题目思路这是2014年9月分ccf的第二道题,一般ccf前两道题,比较简单。这道题使用二维数组来模拟网格,使用暴力来标记之前涂过的方格。代码#include<stdio.h>#include<iostream>using namespace std;#define N 110int arr[N][N];int main(){ int n; scanf("%d",&n); int result=0; while(n--){
2022-02-23 09:32:55
448
原创 CCF相邻数对
题目思路排序后进行遍历即可。代码#include<iostream>#include<stdio.h>using namespace std;#define N 1010int arr[N];//排序算法:快排void sort(int arr[],int start,int end){ if(start>=end){ return ; } int temp=arr[start]; int i=start
2022-02-23 09:04:00
199
原创 CCF-窗口
题目思路题目有点长,基本意思就是实现对窗口点击时,窗口相对位置的模拟。需要解决一下几个问题窗口的层级关系怎么表示(窗口的相对位置怎么表示)?此处采用的是vector(个人感觉应该是需要一个能够比较便捷的删除某一位置元素和添加元素的集合都可以),在存储的时候就是按照类型头插法的方式一个插入,将窗口层次的关系表现到vector数组下标的关系中,这样下来处在最顶层的窗口就是在第一个元素位置,依次类推,在进行点击确认的过程中也是按照从顶层到底层的顺序进行遍历。for(int i=0;i<n;i+
2022-02-22 09:55:30
329
原创 CCF相反数
题目思路使用哈希表,在对数组中的每个数进行遍历前先将其取绝对值,然后在哈希表中是否已经存在该值,如果有则+1,没有则添加到哈希表中。代码#include<iostream>#include<stdio.h>#include<math.h>#include<unordered_map>using namespace std;#define N 510int main(){ int arr[N]; int n; sc
2022-02-22 08:57:53
160
原创 最大的矩形
思路暴力枚举单调栈暴力枚举思路暴力枚举只要依次遍历[i,j]的面积求出最大值即可 双层循环,第一层循环遍历起点,第二层循环遍历终点,每次求出[i,j]取间内矩形的面积 并与当前的最大值进行比较。取间内面积的求法: 最开始循环该起点时,将该七点的高度作为取间的高度,当后面的矩形的高度低于当前 的取间高度时,进行替换,并计算面积。代码实现int main() { int result = 0; int arr[N]; //读入数据 int num; scanf(.
2022-02-11 12:26:00
511
原创 ISBN号码
思考读完题目就会发现,这是一个考察简单的字符串操作的题目。基本思想其基本思想就是 读入字符串,对字符串进行扫描,当扫描到 ‘-’ ,就跳过此次操作,到扫描到数字时,就按照题目所给的方式进行乘除和加减。最后mod,在进行判断。需要注意的是当识别码不对需要对ISBN进行修改,需要考虑识别码为10的情况。#include <stdio.h>#include <iostream>using namespace std;int main() { char str[14].
2022-02-08 11:23:34
520
原创 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串
2020-10-24 23:19:51
72
原创 两数相加
leetcode每天一题2给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 8071. 自己的思路这个题的时候,第一时间想到
2020-10-18 23:10:32
85
原创 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍 给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]。
2020-10-16 22:35:58
155
原创 利用Swing和GUI的相关知识,设计并编程实现一个GUI简易计算器
利用Swing和GUI的相关知识,设计并编程实现一个GUI简易计算器要求:(1)至少实现“+”、“-”、“*”、“/”、“%”的运算;(2)调用Math类的相关方法,至少实现对数运算、幂运算;(3)利用菜单条、菜单项、菜单至少实现软件的“退出”的功能,并添加对应的快捷键,设置为“Ctrl+E”;(4)检查数据的合法性,若输入数据不合法,则调用文本框类的相关方法,弹出窗口提示用户进行正确的输入;代码注释如下:import java.awt.;import java.awt.event.Acti
2020-07-08 10:33:34
514
原创 单链表的实现及其一些简单功能
单链表的实现#include<iostream>using namespace std;typedef struct LNode { int data; LNode* next;}ListNode;void CreatListF(ListNode*& L, int n, int a[]);//头插法建立链表void CreatListR(ListNode*&...
2019-10-08 21:11:21
210
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人