
C/C++
周杰伦今天喝奶茶了吗
喜欢周杰伦,也喜欢优快云博客,这使我快乐!
展开
-
机试题:求平均年龄
题目描述班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。输入描述:第一行有一个整数n(1<= n <= 100),表示学生的人数。其后n行每行有1个整数,取值为15到25。输出描述:可能有多组测试数据,对于每组数据,输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。要输出浮点数、双精度数小数点后2...原创 2019-05-13 17:28:17 · 3199 阅读 · 1 评论 -
linux c语言 执行cd pwd
#include<stdio.h>#define PATH_SIZE 100#define BUF_SIZE 64int cds(const char *p){ char path[PATH_SIZE]; char *start; char *end; int res; int n= 0; memset(path,'\0',PATH_SIZE); // must...原创 2019-05-07 15:39:10 · 1700 阅读 · 2 评论 -
机试:完数
意外的AC题目描述 求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子(除了它自己)相加和的数。输入描述: 测试数据有多组,输入n,n数据范围不大。输出描述: 对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多...原创 2019-05-14 20:59:04 · 150 阅读 · 0 评论 -
机试题:后缀子串排序
题目描述对于一个字符串,将其后缀子串进行排序,例如grain 其子串有: grain rain ain in n 然后对各子串按字典顺序排序,即: ain,grain,in,n,rain输入描述:每个案例为一行字符串。输出描述:将子串排序输出示例1输入grain输出aingraininnrainstep1:生成子串step2:...原创 2019-05-19 20:29:11 · 621 阅读 · 0 评论 -
背包问题(二):完全背包问题
完全背包问题的特点为:每个物品可选的数量为无穷,其解法与0-1背包问题整体保持一致。题目:有一个储蓄罐 告知其空时的重量和当前重量。并给定一些钱币的价值和相应的重量,求储蓄罐最少有多少现金。求最小值 在状态转移时,dp[j]=min {dp[j-list[i].w]+list[i].v }要求所选恰好满足特定重量 初始状态dp[0]=0 其余dp[j]均为无穷或不存在#inc...原创 2019-05-07 10:22:17 · 448 阅读 · 0 评论 -
背包问题(三):多重背包问题
在此例中,对每个物品的总数量进行了限制,即多重背包问题——每个物品可取的数量为一个确定的整数。#include<stdio.h>struct E{ int w; int v;}list[2001];int dp[101];int max(int a,int b){ return a>b?a:b;}int main(){ int T; scanf("...原创 2019-05-09 08:45:44 · 950 阅读 · 0 评论 -
背包问题(一):0-1背包问题
0-1背包问题是最基本的背包问题。其特点是:每一件物品至多只能选择一件,即在背包中该物品数量只有0和1两种。0-1背包问题:有一个容量为V的背包,和一些物品。这些物品分别有两个属性,体积w和价值v,每种物体只有一个。要求用这个背包装下价值尽可能多的物品,求该最大价值,背包可以不被装满。在众多方案中求解最优解,是典型的动态规划问题。用dp[i][j]表示在总体积不超过j的情况下,...原创 2019-05-06 11:13:48 · 391 阅读 · 0 评论 -
递推求解:N阶楼梯问题
N阶楼梯,一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归)输入N(1<=N<90)分析:把N分别等于1、2、3……的答案排列为一个数列,需要求这个数列每一个数的值。f(n)为台阶总数为n时的上台阶方式总数。当数据较小,可知f(1)=1 f(2)=2当n大于2时,我们考虑每种上台阶方式的最后一步,由于只有两种行走方式,因此它只可能是从n-1阶走...原创 2019-05-06 10:04:37 · 591 阅读 · 0 评论 -
机试题:计算表达式(scanf妙用)
题目描述:对于一个不存在括号的表达式进行计算输入描述: 存在多种数据,每组数据一行,表达式不存在空格示例:输入 6/2+3+3*4输出 18#include<stdio.h>int main(){ char ch; double a[1000],t; while(scanf("%lf",&t)!=EOF) { ...原创 2019-05-08 19:25:06 · 198 阅读 · 0 评论 -
机试:字符串链接
又一神奇的AC题目描述不用strcat 函数,自己编写一个字符串链接函数MyStrcat(char dstStr[],charsrcStr[])输入描述:两个字符串,字符串由小写字母组成。输出描述:链接后的字符串示例1输入hello worldgood morning输出helloworldgoodmorning#include&...原创 2019-05-14 21:45:24 · 238 阅读 · 0 评论 -
机试题:数字反转
题目:12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在有任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转。输入描述:每行两个正整数a和b(0<a,b<=10000)。输出描述:如果满足题目的要求输出a+b的值,否则输出NO。时隔多日后的AC~ 果然,运动和Coding才能将我救赎。#include<st...原创 2019-05-07 19:42:54 · 399 阅读 · 0 评论 -
机试题:棋盘游戏 DFS
题目描述有一个6*6的棋盘,每个棋盘上都有一个数值,现在又一个起始位置和终止位置,请找出一个从起始位置到终止位置代价最小的路径:1、只能沿上下左右四个方向移动 2、总代价是没走一步的代价之和 3、每步(从a,b到c,d)的代价是c,d上的值与其在a,b上的状态的乘积 4、初始状态为1 每走一步,状态按如下公式变化:(走这步的代价%4)+1。输入描述:每组...原创 2019-05-08 18:49:34 · 437 阅读 · 0 评论 -
机试题:xxx定律
题目描述 对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止。 请计算需要经过几步才能将n变到1,具体可见样例。输入描述: 测试包含多个用例,每个用例包含一个整数n,当n为0 时表示输入结束。(1<=n<=10000)输出描述: 对于每组测试用例请输出一个数,表示需要经过的步数,每...原创 2019-05-26 20:45:02 · 210 阅读 · 0 评论 -
机试题:畅通工程与继续畅通工程(加造价)
畅通工程 继续畅通工程 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。 测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M (N, M < =10...原创 2019-05-25 10:53:14 · 331 阅读 · 0 评论 -
进程控制——exec函数族
系统调用execve()对当前进程进行替换,替换者为一个指定的程序,其参数包括文件名(filename)、参数列表(argv)以及环境变量(envp)。exec函数族不止一个,但它们大致相同,在 Linux中,它们分别是:execl,execlp,execle,execv,execve和execvp一个进程一旦调用exec类函数,它本身就"死亡"了,系统把代码段替换成新的程序的代码,废弃原...原创 2019-05-11 21:52:21 · 399 阅读 · 0 评论 -
机试题:畅通工程(无造价)
#include<stdio.h>#define N 1000int Tree[N];int findRoot(int x){//查找某个结点所在树的根结点 if(Tree[x]==-1) return x; else{ int tmp=findRoot(Tree[x]); Tree[x]=tmp; return tmp; }}int main(){ ...原创 2019-05-25 09:46:24 · 156 阅读 · 0 评论 -
机试:统计字符
oh no!先贴出我的代码#include<stdio.h>#include<string.h>int main(){ char a[5]; char b[80]; int times[5]={0}; scanf("%s",a); if(a=="#") return 0; while(a!="#"){ scanf("%s",b);...原创 2019-05-15 20:18:55 · 135 阅读 · 0 评论 -
机试题:寻找大富翁(选择排序)
今日份AC(每次做这种把题目特意包装的题就觉得出题人好可爱(*╹▽╹*))题目描述 浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁.输入描述: 每个用例首先包含2个整数n(0<n<=100000)和m(0<m<=10),其中: n为镇上的人数,m为需要找出的大富翁数, 接下来一行输入镇上n个人的财富值.输出描述: 请输出...原创 2019-05-15 17:29:01 · 323 阅读 · 0 评论 -
机试题:并查集——欧拉回路
题目描述 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?输入描述: 测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为...原创 2019-05-20 20:30:56 · 255 阅读 · 0 评论 -
机试题:字母统计
题目描述输入一行字符串,计算其中A-Z大写字母出现的次数输入描述:案例可能有多组,每个案例输入为一行字符串。输出描述:对每个案例按A-Z的顺序输出其中大写字母出现的次数。示例1输入DFJEIWFNQLEF0395823048+_+JDLSFJDLSJFKK输出A:0B:0C:0D:3E:2F:5G:0H:0I:1J:4K:2L...原创 2019-05-10 18:29:04 · 263 阅读 · 0 评论 -
最短路径——Floyd算法
什么是“最短路径问题”?寻找图中某两个特定结点之间的最短路径的长度。原创 2019-04-20 13:56:33 · 296 阅读 · 0 评论 -
最小生成树——Kruskal算法
例题1:畅通工程问题#include<stdio.h>#include<algorithm>using namespace std;#define N 101int Tree[N];int findRoot(int x){ if(Tree[x]==-1) return x; else{ int tmp=findRoot(Tree[x]...原创 2019-04-20 12:55:10 · 211 阅读 · 0 评论 -
最大公约数——欧几里得算法
把求a,b的最大公约数问题转换成了求a,a mod b的最大公约数问题。1.递归解法#include<stdio.h>int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b);}int main(){ int a,b; while(scanf("%d%d",&a,&b)!=...原创 2019-04-16 08:41:36 · 722 阅读 · 0 评论 -
贪心思想
例题一:#include<stdio.h>#include<algorithm>using namespace std;struct goods{ double j;//该物品总重量 double f;//该商品总价格 double s;//性价比 一元可以买几斤 bool operator <(const goods &A) co...原创 2019-04-12 17:36:52 · 162 阅读 · 0 评论 -
数制转换(提升)
解法分两步:1.将a进制转换成10进制2.将10进制转换成b进制#include<stdio.h>#include<string.h>int main(){ int a,b; char str[40]; while(scanf("%d%s%d",&a,str,&b)!=EOF){ int tmp=0,lenth=strlen(...原创 2019-04-15 17:46:57 · 147 阅读 · 0 评论 -
进制转换(基础)
#include<stdio.h>int main(){ long long a,b;//使用数据类型long long确保不会溢出 int m; while(scanf("%d",&m)!=EOF){ if(m==0)break; scanf("%lld%lld",&a,&b); a=a+b; int ans[50],size=0...原创 2019-04-15 17:28:15 · 264 阅读 · 0 评论 -
查找
例题一#include<stdio.h>int main(){ int buf[200]; int n; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++){ scanf("%d",&buf[i]); } int x,ans=-1; scanf("%d",&x); for(...原创 2019-04-11 17:57:46 · 143 阅读 · 0 评论 -
排版题
例题1:#include<stdio.h>int main(){ int h; while(scanf("%d",&h)!=EOF){ int maxline=h+(h-1)*2;//最后一行包含的星号个数 for(int i=1;i<=h;i++){ for(int j=1;j<=maxline;j++){ if(j<...原创 2019-04-11 16:48:59 · 243 阅读 · 0 评论 -
机试:日期类问题
#include<stdio.h>#define isyeap(x) x%100!=0&&x%4==0||x%400==0 ?1:0//定义了一个宏 判断是否是闰年 int dayofmonth[13][2]={0,0,31,31,28,29,31,31,30,30,31,31,30,30,31,31,31,31,30,30,31,3...原创 2019-04-10 19:43:44 · 236 阅读 · 0 评论 -
排序——成绩排序
自定义一个结构体自定义一个比较函数cmp调用库函数sort#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;struct E{ char name[101]; int age; int score;}buf[1000];...原创 2019-04-10 18:27:18 · 334 阅读 · 0 评论 -
哈夫曼树
哈夫曼树概念:#include<queue>#include<stdio.h>using namespace std;priority_queue<int,vector<int>,greater<int> > Q;int main(){ int n; while(scanf("%d",&n)!=EOF){...原创 2019-04-12 21:55:45 · 138 阅读 · 0 评论 -
经典入门:排序
#include<stdio.h>int main(){ int n; int buf[100]; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++){ scanf("%d",&buf[i]); } for(int i=0;i<n;i++){ for(int j=0;j<...原创 2019-04-10 09:33:40 · 141 阅读 · 0 评论 -
栈的应用
例题一:括号匹配问题解题思路#include<stdio.h>#include<stack>using namespace std;stack<int> s;//定义一个堆栈 char str[110];//保存输入字符串 char ans[110];//保存输出字符串 int main(){ while(scanf("%s",s...原创 2019-04-13 22:09:07 · 152 阅读 · 0 评论 -
广度优先搜索 BFS
#include<stdio.h>#include<queue>using namespace std;bool mark[50][50][50];int maze[50][50][50];struct N{ int x,y,z; int t;};queue<N> Q;int go[][3]={ 1,0,0, -1,0,0, ...原创 2019-04-29 10:17:43 · 351 阅读 · 0 评论 -
深度优先搜索DFS 找迷宫出路问题
分析:确定状态三元组(x,y,t),(x,y)为当前点坐标,t为从起点走到该点所需的时间。目标状态为(dx,dy,T) 初始状态为(sx,sy,0)深度优先搜索也需要剪枝:主人公每走一步,其位置坐标的变化为X(Y)加1或者减1。那么两个坐标分量X,Y的和的奇偶性将发生变化。若起点的坐标和的奇偶性和终点坐标和的奇偶性不同,但要经过偶数秒使其到达,显然是不可能的。...原创 2019-05-04 17:00:32 · 500 阅读 · 0 评论 -
并查集——畅通工程
题目解读:解法:#include<stdio.h>using namespace std;#define N 1000int Tree[N];int findRoot(int x){ if(Tree[x]==-1) return x; else{ int tmp=findRoot(Tree[x]); Tree[x]=tmp; return tm...原创 2019-04-17 21:52:54 · 173 阅读 · 0 评论 -
素数筛选法
一、基础例题#include<stdio.h>#include<math.h>bool judge(int x){ if(x<1) return false; int bound=(int)sqrt(x)+1; for(int i=2;i<bound;i++){ if(x%i==0) return false; } return tr...原创 2019-04-17 15:30:59 · 313 阅读 · 0 评论 -
最小公倍数
#include<stdio.h>int gcd(int a,int b){ return b!=0?gcd(b,a%b):a;//求最大公约数 }int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF){ printf("%d\n",a*b/gcd(a,b)); //输出两数乘积与最大公约数的商 ...原创 2019-04-17 15:20:01 · 170 阅读 · 0 评论 -
数位拆解
方法一:#include<stdio.h>int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF){ int buf1[20],buf2[20],size1=0,size2=0; //用buf1 buf2分别保存从两个整数中拆解出来的 while(a!=0){ buf1[size1++]=...原创 2019-04-14 17:58:13 · 269 阅读 · 0 评论 -
二叉排序树
#include<stdio.h>#include<string.h>struct Node{ Node *lchild; Node *rchild; int c;}Tree[110];int loc;Node *creat(){ Tree[loc].lchild=Tree[loc].rchild=NULL; return &Tree[lo...原创 2019-04-14 17:38:19 · 227 阅读 · 0 评论