自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 打卡第二十九天

一定要保证是四位数,若不够则要在前面补零int n;cin>>n;while(num!="6174"){//强制保持4位count++;return 0;用dx dy数组来表示八个方向int n,m;//八个方向=0)&&(m!//输入i<n;i++){j<m;j++){i<n;i++){j<m;j++){//地雷标记continue;//遍历八个方向k<8;k++){

2026-03-29 22:32:07 297

原创 打卡第二十八天

求这个序列的第 N 项,实际上就是把十进制的数字 N 转换成二进制,然后把这个二进制的 01 串当作 k 进制数,再算回十进制的值。int k,n;cin>>k>>n;//将n转换为二进制n/=2;i>=0;multiply的类型要设为long long,否则可能会溢出else{i<=sqrt(n);//前n个质数的乘积cin>>n;int num=2;while(n--){ //前n个质数num++;

2026-03-28 23:43:31 188

原创 打卡第二十七天

1.大数除法,利用快速幂方法如果二进制当前位是1,就累乘到结果里底数翻倍:10^1 -> 10^2 -> 10^4 -> 10^8处理下一位二进制//快速幂取模//底数设为10while(k>0){//计算10^k,利用k的二进制k/=2;return res;//从那个余数开始,模拟 3 次除法过程i<3;//输出当前的商remain%=b;//更新余数cout<<endl;return 0;int k,n;

2026-03-27 23:31:34 383

原创 打卡第二十六天

用动态规划解决dp[i][j]数组代表以(i,j)为右下角顶点的正方形的最大边长首先边界dp全为1再遍历除边界外所有节点,不断更新dp值判断是否和周围三个格子颜色一致,若一致,dp值为其他三个格子dp的最小值+1最后dp的最大值即最大边长int R, C;i < R;j++) {// dp数组i < R;j++) {// 边界直接为1} else {// 判断是否和周围三个格子颜色一致} else {

2026-03-26 23:27:24 394

原创 打卡第二十五天

1.用两个指针 i 和 j 分别指向两个可能的起始位置,通过比较它们向后延伸的字符,可以快速排除掉那个“肯定不是最小”的起始位置,而不需要暴力比较所有的字符串2.如果从 i开始的字符串在第 k个位置输给了 j,那么从 i+1 开始的字符串,也一定会在某个位置输给 j 对应的位置。所以直接让 i = i + k + 1int L;if (!// 处理跨行输入,直到读满 L 个字符s += temp;//i,j分别为两个起始点// 比较两个起始点向后偏移 k 的字符。

2026-03-25 22:54:44 369

原创 打卡第二十四天

1.num作用:临时存放当前正在读取的数字的变量。负责把连续的数字字符拼成一个完整整数。2.用sign代表该数字的符号位,默认为13.字符转数字:c - '0'string str;else{// 把刚才拼好的 num 加到总和里num=0;// 清空 num,准备存下一个数字1:-1;//最后一个数字后面没有符号,要手动把最后一个 num加进总和return 0;要处理n=0的情况//十进制转x进制//n=0时 返回0n/=x;int m,n;

2026-03-24 16:44:30 375

原创 打卡第二十三天

else//次数相等,按照字母顺序string str;//输出的结果形式成对出现if(!//转大写p.second++;found=true;if(!//输出if(!return 0;1.不能用vector<int>存手机号,会导致输入错误,用for循环输入的话,输入的不是一整串连续的数字,而是用空格分开的数字用string字符串存3.截取子串:number.substr(起始位置, 截取长度)int n;cin>>n;return 0;

2026-03-23 23:52:37 295

原创 打卡第二十二天

1.直接用来表示正方形图案,这样可以直接使用==或自定义的isEqual函数比较2.旋转90度:new[j][N-1-i] = old[i][j]3.square[i][j] ,i代表字符串的索引,j代表字符串中的字符索引。vector<string> 定义的数组天然是一个二维数组,因为字符串(string)本身也是一个字符数组int n;//顺时针旋转90度//初始化n*n的空矩阵,存放旋转后的字符i<n;i++){j<n;//镜像i<n;

2026-03-22 23:46:52 389

原创 打卡第二十一天

每次放数字之前 要保存当前位置int n;num<=n*n;num++){//保存当前位置else{curpos_j=0;else{//输出i<n;i++){j<n;j++){if(j!cout<<endl;cout<<endl;return 0;用递归函数实现不同行不同列元素的选取,用used[]标记该列是否被使用从第一行开始,分配第一列到第四列// 标记列是否被使用// 递归函数:i表示当前处理第i个职员,sum表示当前累计和。

2026-03-21 23:47:12 342

原创 打卡第二十天

int n;i<2*n+1;j++){//对角线处为1//上半三角为2//右半三角为5//左半三角为4//下半三角为3i<2*n+1;j++){//第一列前面无空格else{cout<<endl;return 0;pair<char,int> 代表一张扑克牌vector<pair<char,int>> cards 代表一叠扑克牌。

2026-03-20 21:49:12 367

原创 打卡第十九天

1.判断能否构成三角形:任意两边之和大于第三边2.最后要把count/6,因为同一种三角形 a,b,c 会被重复计数6次int n;// 三重循环枚举三条整数边长 a, b, ca < n;c++) {// 条件1:周长等于 n// 条件2:三边两两不相等= b && b!= c && a!= c);// 条件3:能构成三角形(任意两边之和 > 第三边)// 三个条件同时满足count++;

2026-03-19 23:42:36 375

原创 打卡第十八天

i<=sqrt(n);cin>>n;int a;cin>>a;i<a;i++){break;return 0;1.BFS思想:直接构造只由 0 和 1 组成的数,并判断它是不是 N的倍数从1开始构造,依次生成10、11、100、101、110、111...2.防溢出不需要计算出 M 的大小,只需要知道 M % n == 0若要算一个大数的余数,用余数继续算就能得到正确结果3.把字符串 current 里的每一个字符,挨个取出来,赋值给 c。

2026-03-18 21:23:53 344

原创 打卡第十七天

1.贪心算法选择现有系统中最后一次发射的炮弹高度严格大于该导弹高度的,且最接近该导弹高度的那套系统2.定义最适合拦截当前导弹的系统编号bestsys当前遍历到的导弹高度为h每次找最合适系统时,初始化bestsys=-1,若找到合适系统,bestsys=j 并更新sys[bestsys]=h如果所有现有系统都打不到当前导弹(或者根本还没建立系统) 即则新建一套3.(核心)贪心选择:bestsys=j;int t;cin>>t;int n;cin>>n;

2026-03-17 23:37:06 360

原创 打卡第十六天

核心代码:把集合 A 里的数一个个拿出来,如果这个数在集合 B 中找不到,那就把它打印出来,并告诉程序结果集不为空//去集合 B 中查找是否存在元素 x,返回bool型注意:要先排序if(!集合减法(即求差集 A - B)原理:找出所有属于集合 A,且不属于集合 B 的元素int t;cin>>t;int n,m;cin>>n>>m;i<n;i<m;if(!cout<<endl;return 0。

2026-03-16 23:55:11 356

原创 打卡第十五天

先排序,后用unique进行去重int n;i<n;i++){//排序//去重i++){return 0;int a,b;if(shang%2!if(shang%2!=0){ //若 左边的数为奇数,将右边的数放入number数组中i++){return 0;贪心算法最极限的装法:1,2,3,...,m只需要找到一个最大的盒子数m,使得这m个盒子的球数总和刚好<=k。

2026-03-15 23:53:50 347

原创 打卡第十四天

int n;i<n;i++){m<=n;m++){ //m表示连续m个数i<=n-m;1.错误点// 不仅声明了容量,还直接初始化了 18 个 0后面的 insert 会把输入的 9 个数追加到这 18 个 0 之后,导致 extend 变成了长度为 27 的数组,且前面全是 0。修改:用两次insert放入即可2.每次往右读取一位,把之前的数乘以 10 再加上新数字即可。j<i+9;j++){//数字倒序n/=10;

2026-03-14 23:30:06 390

原创 打卡第十三天

/ 初始化为极小值// 初始化为极大值2.处理“圆环”最简单的方法是将数组“断环成链”:把原始数组复制一份接在后面int m,n;i<m;i++){//处理圆环:将原数组复制一份接在后面// 初始化为极小值// 初始化为极大值i<m;i++){j<n;min=sum;if(!return 0;枚举第一艘船可能的所有距离(一共 100 种可能)对于每一个距离,检查它是否能被第二艘和第三艘船的速度整除。

2026-03-13 23:43:46 342

原创 打卡第十二天

i<=99;i<count;1.用一个数组存储平年每月的天数2.只需要知道每个月13号距离上一个13号过了多少天,然后通过“总天数 % 7”来更新当前的星期。//判断是否为闰年=0))int n;cin>>n;//1900.1.13为周六 index=5year++){month<=12;month++){//记录当前的13号为星期几。

2026-03-12 23:57:31 401

原创 打卡第十一天

存活小白鼠均为1-6月龄,用mice[1]~mice[6] 表示1~6月龄的小白鼠每月统计新生小白鼠即1月龄数量,为上个月月龄2、3、4的小白鼠总和之后让所有小白鼠月龄+1,倒序赋值,防止数据覆盖最后统计总数int n;// mice[1]~mice[6] 表示1~6月龄的小白鼠mice[1]=1;//第一个月有一对m<=n;m++){//新生小白鼠数量为上个月月龄2、3、4的小白鼠总和age>=2;age--){ //倒序赋值,让所有小白鼠月龄 + 1age<6;

2026-03-11 23:55:30 392

原创 打卡第十天

暴力枚举 m 值:从 m=1 开始逐个尝试,直到找到符合条件的最小值对于每个 m,模拟出列过程,检查前 k 个出列的是否都是绑匪(编号 > k),一旦发现某个 m 满足条件,立即返回这个 m 值bool content(int k,int m){ //检查当前m值是否满足条件i<=2*k;i++){//当前起始位置//已出列绑匪数//出列的是人质//移出count++;//前k个出列的都是绑匪int m=1;m++;int k;return 0;

2026-03-10 23:45:24 367

原创 打卡第九天

给你n个整数,求他们中所有奇数的乘积。输入说明输入数据包含两行,第一行为一个数为n,表示第二行将输入n个整数。你可以假设这n个数据中必定至少存在一个奇数。输出说明输出一个整数。2.求数列项问题描述数列是数学世界中一种非常有趣的数字排列规则,它使一串数字相互之间产生了某种联系,变幻无穷。很多数学家对数列产生了浓厚的兴趣,花了很多时间对其进行研究,明明就是其中的一位。一天,他又专注于一种新的数列排列规则,该排列规则满足以下条件:1. 该数列的第一个数为1。2. 该数列的第二个数为5。3. 该数列的

2026-03-09 23:26:18 375

原创 打卡第八天

输入一个正整数,求这个正整数的各位数字之和。输入说明你的程序需要从标准输入设备(通常为键盘)中读入多组测试数据。每组测试数据为正整数,每行一个N,N小于20000。输出说明对每组测试数据,你的程序需要向标准输出文件(通常为启动该程序的文本终端)依次输出一组对应的答案:输出为它的各位数字之和,所有数据前后没有多余的空行,两组数据之间也没有多余的空行。

2026-03-08 23:43:35 360

原创 打卡第七天

核心思路:将日期封装为结构体并自定义比较规则,利用排序快速找到最早 / 最晚日期int year;int month;int day;if (year!if (month!int N;// 读取N个日期i < N;1.先处理特殊值:n>=1 直接返回false(不是素数),n=2 返回true(唯一的偶素数),大于 2 的偶数直接返回false2.只需检查从 3 到√n的奇数(因为如果 n 有大于√n的因数,必然对应一个小于。

2026-03-07 23:50:32 359

原创 第六天打卡

通过两个辅助函数分别判断质数和回文数,遍历区间筛选符合条件的数字// 判断一个数是否为质数// 小于2的数不是质数// 2是唯一的偶质数// 偶数(除了2)都不是质数,提前过滤// 检查从3到sqrt(num)的奇数是否能整除numi += 2) {// 判断一个数是否为回文数int a, b;// 遍历范围[a, b],筛选回文质数并输出i <= b;++i) {// 每组的总菜价// 遍历当前组的每种菜。

2026-03-06 23:34:36 329

原创 第五天打卡

1.核心逻辑:通过数学推导将问题转化为求解 k ,避免暴力枚举所有数设 N 为一个数,个位是 7,可表示为 N = 10 * k + 7(k 为 N 去掉个位 7 后的数)N 的位数为 m,则将个位 7 移到最高位后的新数为:7 * 10^(m-1) + k根据题意:7 * 10^(m-1) + k = T * (10 * k + 7)整理得:k = (7 * 10^(m-1) - 7 * T) / (10 * T - 1)

2026-03-05 23:51:29 353

原创 第四天打卡

1.当有多组输入数据,用while(cin>> )时,注意:计数变量定义要放在while循环里,而不是全局初始化2.后面会对result进行修改,为了能正确输出result值,应该用temp临时变量代替它进行修改3.逐位进行比对,用while循环//用临时变量处理取位,保留原始乘积//逐位统计匹配的数字count++;return 0;4.另解:转为字符串进行比对// 转为字符串方便遍历每一位// 字符转数字(如'3'->3)

2026-03-04 23:00:40 349

原创 打卡第三天

1.注意判断是否为闰年2.用monthDays数组存储 1-12 月的天数,索引 0 对应 1 月,索引 1 对应 2 月(初始 28 天)用for循环累加当前月份之前所有月份的天数,再加上当月日期dint y,m,d;if (IsR(y)) { //若为闰年,将2月数值改为29int num=0;// 累加前m-1个月的天数i<m-1;return 0;

2026-03-03 23:36:51 270

原创 打卡第二天

1.目标:找出数字串中连续出现次数最多的数字;如果有多个数字连续出现次数相同,则选择第一次达到该次数的数字,并输出这个数字和它的出现次数2.多组输入,使用while(cin>>n) 循环读取多组测试数据,用int numbers[100]保存数字串,for循环读取,每一组输入有一个输出3.只有当当前计数超过最大计数时,才更新最大值和结果数字,保证首次出现最大次数的数字被保留int n;i<n;//最大连续次数//结果数字,初始为第一个//当前数字连续次数// 遍历数字串,统计连续次数。

2026-03-02 19:27:49 795

原创 打卡第一天

1.处理到期日dueDay的值:原日期与到期月的最大天数取最小值,用min函数,加头文件#include <algorithm>2.跨多年的月份要通过while循环计算,不能用if,if只能处理跨一年3.闰年判断需基于到期年而非原始存款年代码:due_y=year;due_y++;break;

2026-03-01 21:27:01 461

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除