外贸多语言网站,网站设计的性能需求,沈阳市网站,微信公众平台网页制作作者#xff1a;指针不指南吗 专栏#xff1a;蓝桥杯倒计时冲刺 #x1f43e;马上就要蓝桥杯了#xff0c;最后的这几天尤为重要#xff0c;不可懈怠哦#x1f43e; 文章目录1.卡片2.数字三角形3.购物单4.回文日期1.卡片 题目 链接#xff1a; 卡片 - 蓝桥云课 (lanqiao… 作者指针不指南吗 专栏蓝桥杯倒计时冲刺 马上就要蓝桥杯了最后的这几天尤为重要不可懈怠哦 文章目录1.卡片2.数字三角形3.购物单4.回文日期1.卡片 题目 链接 卡片 - 蓝桥云课 (lanqiao.cn) 小蓝有很多数字卡片每张卡片上都是数字 00 到 99。 小蓝准备用这些卡片来拼一些数他想从 11 开始拼出正整数每拼一个就保存起来卡片就不能用来拼其它数了。 小蓝想知道自己能从 11 拼到多少。 例如当小蓝有 3030 张卡片其中 00 到 99 各 33 张则小蓝可以拼出 11 到 1010 但是拼 1111 时卡片 11 已经只有一张了不够拼出 1111。 现在小蓝手里有 00 到 99 的卡片各 20212021 张共 2021020210 张请问小蓝可以从 11 拼到多少 提示建议使用计算机编程解决问题。 我的题解 #includebits/stdc.h
using namespace std;int num[10];int main()
{int i0;while(1){int ai;while(a0) //取一个数的每一位的做法{num[a%10];a/10;}for(int j0;j10;j){if(num[j]2021){couti-1; //重点i的值是取不到的所以-1return 0;}}}return 0;
}反思 第一次提交错误是 3182即当3182时卡片不够用所以不应该包括 3182 正确答案 应该是 3181 可以拿分的题没了 考虑边界条件是否可以取到是否需要多取一个 2.数字三角形 题目 链接数字三角形 - 蓝桥云课 (lanqiao.cn) 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径把路径上面的数加起来可以得到一个和你的任务就是找到最大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外向左下走的次数与向右下走的次数相差不能超过 1。 输入描述 输入的第一行包含一个整数N (1≤N≤100)表示三角形的行数。 下面的 N 行给出数字三角形。数字三角形上的数都是 0 至 100 之间的整数。 输出描述 输出一个整数表示答案。 示例 输入 5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5输出 27我的题解 第一次 #includebits/stdc.h
using namespace std;const int N100;int d[N][N];int main()
{int n;cinn;for(int i0;in;i)for(int j0;ji;j)cind[i][j];for(int in-2;i0;i--)for(int j0;ji;j)d[i][j]max(d[i1][j],d[i1][j1]);coutd[0][0];return 0;
}我觉得我的做法没有问题而且手算出来答案也是 30但是样例是 27 悟了原因向左下走的次数与向右下走的次数相差不能超过 1没有注意这句话 找到左边界找到右边界即连续向左走两步就只能拐弯 #includebits/stdc.h
using namespace std;const int N100;int d[N][N];int main()
{int n;cinn;for(int i1;in;i)for(int j1;ji;j)cind[i][j];for(int i2;in;i) //从上往下开始找路径的权值最大的for(int j1;ji;j)d[i][j]max(d[i-1][j],d[i-1][j-1]);coutmax(d[n][(n1)/2],d[n][(n2)/2]); //最后只能走中间 get这个点return 0;
}反思 最后一排只能走到 最中间的部分但是注意 分成 奇数和偶数两种情况 巧妙的方法 取最中间两个数的表示方法记住[(n1)/2] [(n2)/2] 认真审题注意到每一句话太重要了 3.购物单 题目 链接 购物单 - 蓝桥云课 (lanqiao.cn 小明刚刚找到工作老板人很好只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦但又不好推辞。 这不大促销又来了老板夫人开出了长长的购物单都是有打折优惠的。 小明也有个怪癖不到万不得已从不刷卡直接现金搞定。 现在小明很心烦请你帮他计算一下需要从取款机上取多少现金才能搞定这次购物。 取款机只能提供 100 元面额的纸币。小明想尽可能少取些现金够用就行了。 你的任务是计算出小明最少需要取多少现金。 以下是让人头疼的购物单为了保护隐私物品名称被隐藏了。 **** 180.90 88折
**** 10.25 65折
**** 56.14 9折
**** 104.65 9折
**** 100.30 88折
**** 297.15 半价
**** 26.75 65折
**** 130.62 半价
**** 240.28 58折
**** 270.62 8折
**** 115.87 88折
**** 247.34 95折
**** 73.21 9折
**** 101.00 半价
**** 79.54 半价
**** 278.44 7折
**** 199.26 半价
**** 12.97 9折
**** 166.30 78折
**** 125.50 58折
**** 84.98 9折
**** 113.35 68折
**** 166.57 半价
**** 42.56 9折
**** 81.90 95折
**** 131.78 8折
**** 255.89 78折
**** 109.17 9折
**** 146.69 68折
**** 139.33 65折
**** 141.16 78折
**** 154.74 8折
**** 59.42 8折
**** 85.44 68折
**** 293.70 88折
**** 261.79 65折
**** 11.30 88折
**** 268.27 58折
**** 128.29 88折
**** 251.03 8折
**** 208.39 75折
**** 128.88 75折
**** 62.06 9折
**** 225.87 75折
**** 12.89 75折
**** 34.28 75折
**** 62.16 58折
**** 129.12 半价
**** 218.37 半价
**** 289.69 8折需要说明的是88 折指的是按标价的 88 计算而 8 折是按 80 计算余者类推。 特别地半价是按 50计算。 请输出小明要从取款机上提取的金额单位是元。 第一次 #includebits/stdc.h
using namespace std;int main()
{int sum0;int n50;int a,b;while(n--){cinab; //这里输入很是个问题suma*b;}coutsum;return 0;
}为了这个输入我去 word 上去处理 数据方便它的输入 一系列的查找替换 处理好 之后 程序 还是不能正确输入 调式发现 a一直是180 数据类型错了 应该是 double , 我一直写的 int , 最后才发现 第二次——成功 #includebits/stdc.h
using namespace std;int main()
{double sum0;int n50;double a,b; //数据类型 错了while(n--){cinab;suma*b;}coutsum;return 0;
}通过看题解还学会了一种方法这个更加简便 反思 一定要确保数据类型使用正确巧用 word 和 excel 来解答看了 python 的题解tql 打算简单学习一下 基本语法填空够用就行 4.回文日期 题目 链接回文日期 - 蓝桥云课 (lanqiao.cn) 2020 年春节期间有一个特殊的日期引起了大家的注意2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202恰好是一个回文数。我们称这样的日期是回文日期。 有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同因为不到 2 年之后就是下一个回文日期20211202 即 2021 年 12 月 2 日。 也有人表示 20200202 并不仅仅是一个回文日期还是一个 ABABBABA 型的回文日期。对此小明也不认同因为大约 100 年后就能遇到下一个 ABABBABA 型的回文日期21211212 即 2121 年 12 月 12 日。算不上 “千年一遇”顶多算 “千年两遇”。 给定一个 8 位数的日期请你计算该日期之后下一个回文日期和下一个 ABABBABA 型的回文日期各是哪一天。 输入描述 输入包含一个八位整数 N*表示日期。 对于所有评测用例10000101≤N≤89991231保证 N 是一个合法日期的 8 位数表示。 输出描述 输出两行每行 1 个八位数。第一行表示下一个回文日期第二行表示下一个 ABABBABA 型的回文日期。 示例 输入 20200202输出 20211202
21211212第一次 #includebits/stdc.h
using namespace std;int main()
{int k;cink;int a[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};int flagh1,h0,w0;int resh,resw;while(!h||!w){k;//更新日期 int dk%100;int mk%10000/100;int yk/10000;if(y%40y%100!0||y%4000) a[2]29;else a[2]28;if(da[m]){d1,m;}if(m12){m1,y;}kdm*100y*10000;//判断满足条件 int tk;int b[8]{0}; //把每一位放到数组中去int i0;while(t0){b[i]t%10;t/10; }//判断回文日期 if(!h) //表示还没找到 {for(int i0;i8;i){if(b[i]!b[8-i-1]) {flagh0; //不是回文标记1 break;}}if(flagh) {reshk;h1;}}//判断完美日期 if(!w){int i;if(b[0]b[2]b[5]b[7]b[1]b[3]b[4]b[6]){w1;reswk;}} } coutreshendlresw;return 0;}以运行超时告终 第二次 #includebits/stdc.h
using namespace std;bool isleap(int a)
{return a%40a%100!0||a%4000;
}bool check(int year,int month,int day)
{if(month0||month12) return false;int a[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};if(isleap(year)) a[2]29;else a[2]28;if(daya[month]||day0) return false;else return true;
}int main()
{int k;cink;int flag1;for(int ik1;i89991231;i){int di%100;int mi%10000/100;int yi/10000;//判断满足条件 int tk;int b[8]{0}; //把每一位放到数组中去int j0;while(t0){b[j]t%10;t/10; }if(b[0]b[7]b[1]b[6]b[2]b[5]b[3]b[4]flag){if(check(y,m,d)){coutiendl;flag0;}}if(b[0]b[2]b[2]b[5]b[5]b[7]b[1]b[3]b[3]b[4]b[4]b[6]){coutiendl;return 0;} }return 0;}再次以失败告终但是我就是模拟的正确题解不知哪里不行 正确题解 #include iostream
using namespace std;bool isLeap(int y){return (y%40y%100!0)||(y%4000);
}bool check(int year,int month,int day){//判断是否为合法日期if(month12||month0) return false;if(day31) return false;if(month2){if(isLeap(year)day29)return false;if(!isLeap(year)day28)return false;}if(month4||month6||month9||month11){if(day30) return false;}return true;
}
int main()
{int n,i;cinn;int a,b,c,d,e,f,g,h;//8位数字int year,month,day;bool flagfalse;for(in1;i99999999;i){yeari/10000;month(i%10000)/100;dayi%100;ai%10;b(i/10)%10;c(i/100)%10;d(i/1000)%10;e(i/10000)%10;f(i/100000)%10;g(i/1000000)%10;h(i/10000000)%10;if(ahbgcfdeflagfalse){if(check(year,month,day)){coutiendl;flagtrue;//只输出一个回文}}if(ahbgcfdeacbd){if(check(year,month,day)){coutiendl;break;}}}return 0;
}