深入浅出
ღ江晚吟
如果浮生若梦,万事无常,最终都归于尘土,那么也许我们的雄心壮志不过徒然为荒诞不经的玩笑而已。如果我们无可救药地执着于自己的意义,或许也只能安于自身的可笑。
展开
-
P1044 [NOIP2003 普及组] 栈(卡特兰数)
卡特兰数什么是卡特兰数思路//初始化:当进栈的个数为0,1 时 方法为1;//n个数 当x为最后一个出栈 前面有f[x-1]种方法 后面有f[n-x]种//方案数:f[x-1]*f[n-x]//每个数都可能最后一个出去。//所以方案数为每种情况的和。源码#include<bits/stdc++.h>using namespace std;//初始化:当进栈的个数为0,1 时 方法为1;//n个数 当x为最后一个出栈 前面有f[x-1]种方法 后面有f[n-x]种.原创 2021-03-21 18:42:45 · 208 阅读 · 0 评论 -
P1098 [NOIP2007 提高组] 字符串的展开
思路条件太多了,烦死了。参考大神的代码,写出来的!(一个一个判断和输出)1.一个一个字符遍历,寻找 -2.判断-前后两个字符,是否满足条件2.1 若满足, 则根据p3决定输出顺序,根据p2决定输出的字符个数和类型for(p3==1?j=first+1:j=end-1; p3==1?j<end:j>first; p3==1?j++:j-- ) //p==1顺序2.2若不满足,则直接输出字符源码#include<bits/stdc++.h>using name.原创 2021-03-16 17:38:54 · 309 阅读 · 0 评论 -
P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two
思路这道题目要按照题目意思一步一步来。1.先把地图输入2.寻找牛和人的位置3.判断方向和方向改变的条件(临界条件)4.根据题目分钟数是在一定范围内,则可以作为结束条件。源码#include<bits/stdc++.h>using namespace std;char mp[11][11];int cx,cy,fx,fy;//坐标 int dc,df;//方向 int ans; int main(){ //输入地图 for(int i=1;i<=10;..原创 2021-03-16 16:43:50 · 149 阅读 · 0 评论 -
P4924 [1007]魔法少女小Scarlet
思路1 2 3 4 5 67 8 9 10 11 1213 14 15 16 17 1819 20 21 22 23 2425 26 27 28 29 3031 32 33 34 35 36矩阵逆时针旋转1 2 3 4 5 69 15 21 10 11 128 14 20 16 17 187 13 19 22 23 2425 26 27 28 29 .原创 2021-03-15 18:42:14 · 68 阅读 · 0 评论 -
P5461 赦免战俘(递归)
思路这题就是要用递归来写。就是分成四个区域,然后把第一块全部赋值为0,然后继续递归。结束条件就是正方形的边为2。源码#include<bits/stdc++.h>using namespace std;int vis[1050][1050];int n;void dfs(int p,int x,int y){ if(p==2){ //结束条件,将左上角赋值为0 vis[x][y]=0; return ; } for(int i=x;i<=x+p/.原创 2021-01-30 15:26:49 · 382 阅读 · 2 评论 -
P1598 垂直柱状图
思路这题思路不能跑偏。一开始我是想将整个图形一起输出,发现不知道如何实现,一脸蒙蔽。然后想了想,一行一行输出,只要判断当前列的最大位置,是否有*号就行了。源码#include<bits/stdc++.h>using namespace std;int ff[26];int main(){ string s; for(int i=0;i<4;i++){ getline(cin,s); for(int j=0;j<s.length();j++){ if.原创 2021-03-14 19:32:15 · 79 阅读 · 0 评论 -
P1603 斯诺登的密码
思路//思路:开数组:字符数组 和 取模数组//然后根据题目输入6个单词,则直接用for循环输入//然后寻找是否在字符数组中出现//最后要注意的:第一位不能有前导0//方法:除了第一位,其他都补足两位源码#include<bits/stdc++.h>//思路:开数组:字符数组 和 取模数组//然后根据题目输入6个单词,则直接用for循环输入//然后寻找是否在字符数组中出现//最后要注意的:第一位不能有前导0//方法:除了第一位,其他都补足两位 using nam.原创 2021-03-12 20:59:29 · 155 阅读 · 0 评论 -
P1765 手机
思路打表,有一个坑点要注意:可能会出现换行符合转义符,所以写两个if就行了。源码#include<bits/stdc++.h>using namespace std;int main(){ int a[27]={1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4}; string s; getline(cin,s); int sum=0; for(int i=0;i<s.length();i++){ if(s.原创 2021-03-12 18:50:41 · 220 阅读 · 0 评论 -
P5734 【深基6.例6】文字处理软件
思路本题用到的STL:1.substr 生成子串,输入位置和长度2.insert 在字符串中插入字符串3.find 查找字符串中某个字符串的位置并返回它的位置源码#include<bits/stdc++.h> using namespace std;int n,a;string qwq;string c1;string b1;int b,c,d=-1,e;//并不全有用int main(){ cin>>n; cin>>qwq; for.原创 2021-01-27 22:31:49 · 152 阅读 · 0 评论 -
P1957 口算练习题(输入情况特殊)
思路这个题目的难点就是如何输入,换言之就是判断输入的是否为字符及如何转换。1.当输入的是字母时,则继续输入两个数。2.当不是字母时,则要将输入的转换成整型,这里用到了sscanf。sscanf(b,"%d",&c); //把b格式化成整型,存于c3.输出当然也有捷径:sprintf(s,"%d+%d=%d",c,d,c+d);// ""中的就是模板,把c,d,c+d分别赋值给3个%d// 然后在将 " "中的赋值给s(包括值)//要注意的是,这里并没有输入,而是格式化然后就可以计.原创 2021-01-29 19:30:58 · 295 阅读 · 0 评论 -
P1320 压缩技术(续集版)
思路、真的好烦这种题目,这种题目老是不会写。这题目的注意点是:可以用一个字符来标记要转变的字符,然后直接输出之前的。源码#include<bits/stdc++.h>using namespace std;int main(){ char a[205][205]; int sum=0; char c='0';//c用来标记转变的那个字符 scanf("%s",&a[1]); int len=strlen(a[1]); for(int i=2;i<=l.原创 2021-03-11 19:29:42 · 193 阅读 · 0 评论 -
P5732 【深基5.习7】杨辉三角
思路注意初始化:给最外面赋值1源码#include<bits/stdc++.h>using namespace std;int a[21][21];int n;int main(){ cin>>n; for(int i=1;i<=n;i++){ a[i][1]=1; a[i][i]=1; } for(int i=3;i<=n;i++){ for(int j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1].原创 2021-03-11 18:30:27 · 149 阅读 · 0 评论 -
P5731 【深基5.习6】蛇形方阵
思路:注意转向,可以使用while来转向。源码#include<bits/stdc++.h>using namespace std;int main(){ int a[15][15]={0}; int n,k=1,x=1,y=0; cin>>n; while(k<=n*n){ while(y<n&&!a[x][y+1]) a[x][++y]=k++; //从左往右 while(x<n&&!a[x+1.原创 2021-03-11 18:26:45 · 98 阅读 · 0 评论 -
P1303 A*B Problem
思路c[i+j-1]+=a[i]*a[j]#include<bits/stdc++.h>#define maxn 5050using namespace std;int a[maxn],b[maxn],c[maxn];int main(){ string A,B; cin>>A>>B; for(int i=A.length()-1,j=1;i>=0;i--,j++) a[j]=A[i]-'0'; for(int i=B.length()-.原创 2021-03-05 19:33:34 · 87 阅读 · 0 评论 -
线性筛质数
原理:根据质数,把这个质数的倍数除去。void prime(int n,bool a[]){ memset(a,0,sizeof(bool)*(n+1)); a[0]=a[1]=1; //设置为合数 for(int i=2;i*i<=n;i++){ if(a[i]==0){ //质数 for(int j=i<<2;j<=n;j=j+i) a[j]=1; //把质数的倍数全部设置成合数 } }} ...原创 2021-03-04 20:55:50 · 78 阅读 · 1 评论 -
19章 位运算与进制转换
1.进制转换1.1整数进制转换例:10进制转16进制 (114514)10=(BF52)16方法:除16取余法1.2整数进制转换例题方法1:#include <stdio.h>#include <ctype.h>int main () { int n, m, i, sum = 0, time = 1;//sum是用来存放转换成十进制后的数 char a[30];//输入的数组 int b[30];//存放每一位转换成数是多少的数组原创 2021-02-22 22:55:24 · 965 阅读 · 3 评论