建设了网站后怎么用谷歌引流,wordpress自动更新失败,seo专员是干嘛的,网站制作类软件推荐1.找到字符串中出现次数最少的字符 题目描写叙述 给定一个字符串#xff08;长度小于50#xff09; 找到该字符串出现次数最少的字符 假设有两个字符出现次数同样#xff0c;并且均出现最少。那么ASCII码小的字符优先 输入 输入为一行字符串。不含空格 输出 输出出现次数最少… 1.找到字符串中出现次数最少的字符 题目描写叙述 给定一个字符串长度小于50 找到该字符串出现次数最少的字符 假设有两个字符出现次数同样并且均出现最少。那么ASCII码小的字符优先 输入 输入为一行字符串。不含空格 输出 输出出现次数最少的字符 例子输入 rra3 333444abcd 例子输出 3 a 解题思路 先将字符串内部依据字符顺序排序然后遍历一遍。记录出现次数最小的假设有多个次数最小的。选排序在最前的。 代码 #includeiostream
#includealgorithm
#includecstring
using namespace std;char a[105];int main()
{int len,i;while(cina){lenstrlen(a);sort(a,alen);//coutaendl;int min105; //字符出现的最少次数赋初值char res;int p1;for(ilen-2; i0; i--){if(a[i]a[i1]) //统计a[i1]出现的次数p;else{if(pmin) //更新出现次数最少的{minp;resa[i1];}p1;}}if(pmin) //推断a[0]{minp;resa[0];}coutresendl;}
}/*
rra3
333444abcd
1112234
11223344
*/ 2.归并两个已排序的数组数组长度在1-20之间。将其归并成一个顺序的数组 注意在输出时。最后一个数字后边要打印一个空格 输入 第一行给定測试用例的个数N。接下来两行数据为一组每行的第一个数是一个整数表示的是该行数组的大小。 输出 输出每一个測试用例的结果。每行数据为一行。注意在输出时最后一个数字后边要打印一个空格 例子输入 2 4 1 3 5 7 3 2 4 6 2 3 5 3 -1 2 3 例子输出 1 2 3 4 5 6 7 -1 2 3 3 5 解题思路 用两个指针遍历两个数组。每次输出小的。 代码 #includeiostream
using namespace std;int a[105];
int b[105];int main()
{int tes;int m,n;int i,j;while(cintes){while(tes--){cinm;for(i0; im; i)cina[i];cinn;for(i0; in; i)cinb[i];i0,j0;while(imjn) //两个数组里面用指针选小的{if(a[i]b[j]){couta[i] ;i;}else{coutb[j] ;j;}}while(im) //a数组还有剩余{couta[i] ;i;}while(jn) //b数组还有剩余{coutb[j] ;j;}coutendl;}}return 0;
}/*
2
4 1 3 5 7
3 2 4 6
2 3 5
3 -1 2 3
*/ 3.推断二叉树的先序遍历序列 题目描写叙述 一种线性表示二叉树的方式是使用先序遍历序列假设遇到非空节点。我们记录它的值假设遇到空节点我们用固定字符或者数字表示。比如用数字0表示 比如上边这样一颗二叉树其先序遍历序列为“9 3 4 0 0 1 0 0 2 0 6 0 0”当中0表示空节点。给出一个线性序列推断这个序列是否为一个二叉树的先序遍历序列。 序列中每一个非空节点的值均为非0整数0表示空节点。节点之间用空格隔开节点个数不超过20个 输入 输入一行序列。序列中每一个数字表示一个节点的值非空节点的值均为非0整数0代表空节点节点之间用空格隔开节点个数不超过20个。 输出 假设该序列是一个二叉树的先序遍历序列。输出一行“True”,否则输出“False” 例子输入 9 3 4 0 0 1 0 0 2 0 6 0 0 1 0 9 0 0 1 例子输出 True False False 解题思路 首先一个二叉树必须是叶子节点个数等于枝干节点数1。即数组里面0的个数等于非0个数1。假设不满足。直接输出False。 然后依照先序建立二叉树的方法。记录建立二叉树总共用的节点。 假设 1建立二叉树使用的节点数index等于数组里数的个数n 2数组里面0的个数等于非0个数1。 那么输出True否则输出False。 代码 #includeiostream
#includecstring
#define maxn 1005
using namespace std;char str[maxn];
int a[maxn];
int index;typedef struct node
{node *l;node *r;int val;
}*root;void createBiTree(root T) //先序建立二叉树
{if(a[index] 0){T NULL;index;}else{T new node;T-val a[index];createBiTree(T-l);createBiTree(T-r);}
}int main()
{int len,i,n;while(gets(str)){n0;int tmp,flag;tmpflag0;lenstrlen(str);int cnt0; //记录叶子节点个数for(i0; ilen; i) //将字符串处理成int数组保存在数组a中{if(str[i]-){flag1;}else if(str[i] ){if(flag)tmp0-tmp;a[n]tmp;if(a[n]0)cnt;n;flag0;tmp0;}elsetmptmp*10(str[i]-0);}if(flag)tmp0-tmp;a[n]tmp;if(a[n]0) cnt;n;if(cnt!n-cnt1) //叶子节点必须等于枝干节点1{coutFalseendl;continue;}index0;root T;createBiTree(T);if(nindex)coutTrueendl;elsecoutFalseendl;}return 0;
}/*
9 3 4 0 0 1 0 0 2 0 6 0 0
1 0
9 0 0 19 2 0 0 5 6 0 0 0
9 2 0 0 5 0 6 0 0
*/ 4.最短路径和 题目描写叙述 输出一个大小为M×N的方格每一个方格填满了非负整数。找到一条从左上角到右下角的路径使得路径经过的全部方格内的值相加和最小 1 2 3 1 1 1 比如如上方格从左上角開始先向下走再向右走。得到的路径和最短。最短为11114 注意在随意时刻。你仅仅有向下移动或者向右移动。 输入 输入第一行为该方格的行数和列数。行数和列数不超过1000。 接着输入数字矩阵 输出 输出最短路径和 例子输出 2 3 1 2 3 1 1 1 1 1 3 例子输出 4 3 解题思路 在随意时刻。你仅仅有向下移动或者向右移动。 不论什么一个状态仅仅能从上方或者左方得到。 用二维数组a存储该方格。用dp[i][j]表示到达第i行第j列这个数的最小值。 1dp[1][j]仅仅能从左方得到。dp[1][j]dp[1][j-1]a[1][j]; 2) dp[i][1]仅仅能从上方得到。dp[i][1]dp[i-1][1]a[i][1]; 3) dp[i][j](i1,j1)能够从左方和上方得到。状态转移方程为 dp[i][j] min(dp[i-1][j] , dp[i][j-1]) a[i][j] 最后输出dp[m][n]即为结果 代码 #includeiostream
#define maxn 1005
using namespace std;int a[maxn][maxn];
int dp[maxn][maxn];int mi(int p1,int p2)
{if(p1p2) return p1;return p2;
}int main()
{int m,n;int i,j;while(cinmn){for(i1; im; i)for(j1; jn; j)cina[i][j];dp[0][1]0;dp[1][0]0;for(i1; im; i)dp[i][1]a[i][1]dp[i-1][1];for(i1; in; i)dp[1][i]a[1][i]dp[1][i-1];for(i2; im; i){for(j2; jn; j){dp[i][j]mi(dp[i-1][j],dp[i][j-1])a[i][j];}}/*for(i1;im;i){for(j1;jn;j){coutdp[i][j] ;}coutendl;}*/coutdp[m][n]endl;}
} 5.找出一个缺失的正整数 描写叙述 给定一个未排序的数组找出一个缺失的正整数 比如 数组 1 2 0 有正整数1和2。缺失的第一个正整数是3 输入 输入为一个未排序的整数数组。数组长度不超过1000000 输出 输出为整数数组中第一个缺失的正整数 例子输入 1 2 0 3 4 -1 1 例子输出 3 2 解题思路 把全部的正正整数都映射到map里面。 然后从最小的正整数1開始找假设没有被映射。便输出。然后结束。 代码 #includeiostream
#includecstring
#includemap
using namespace std;char str[1005];
map int,int mq;int main()
{int len,i;while(gets(str)){mq.clear();int tmp,flag;tmpflag0;lenstrlen(str);for(i0; ilen; i) //将字符串处理成int数组保存在数组a中{if(str[i]-){flag1;}else if(str[i] ){if(!flag) //负数不须要处理{mq[tmp]1;}flag0;tmp0;}elsetmptmp*10(str[i]-0);}if(!flag)mq[tmp]1;for(i1;; i){if(!mq[i]){coutiendl;break;}}}return 0;
}