莱芜网站快排,建设个人网站的要求,门户网站建设与运行情况良好,网站后期的维护管理目录
1.闰年判断
2.志愿者选拔
3.单词接龙
4.对称二叉树
5.英雄南昌欢迎您
6.时间转换
7.矩阵乘法
8. Huffuman树 1.闰年判断 题目描述#xff1a; 给定一个年份#xff0c;判断这一年是不是闰年。 当以下情况之一满足时#xff0c;这一年是闰年#xff1a; 1. 年…目录
1.闰年判断
2.志愿者选拔
3.单词接龙
4.对称二叉树
5.英雄南昌欢迎您
6.时间转换
7.矩阵乘法
8. Huffuman树 1.闰年判断 题目描述 给定一个年份判断这一年是不是闰年。 当以下情况之一满足时这一年是闰年 1. 年份是4的倍数而不是100的倍数 2. 年份是400的倍数。 其他的年份都不是闰年。 数据规模与约定1990 y 2050。 输入格式 输入包含一个整数y表示当前的年份。请在这里写输入格式。例如输入在一行中给出2个绝对值不超过1000的整数A和B。 输出格式 输出一行如果给定的年份是闰年则输出yes否则输出no。 输入样例 2013
2016 输出样例 no
yes 参考答案
#includeiostream
using namespace std;
void check(int year)
{if(year1990year2050){if(year%40year%400!0||year%4000)coutyesendl;else coutnoendl;}
}
int main()
{int a,b;cinab;check(a),check(b);
} 2.志愿者选拔 题目描述 光明学院ACM赛事志愿者的选拔工作正在学院如火如荼地进行。为了选拔最合适的人才学院对所有报名的选手进行了笔试笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定即如果计划录取m名志愿者则面试分数线为排名第m*150%(向下取整)名的选手的分数而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。 现在就请你编写程序划定面试分数线并输出所有进入面试的选手的报名号和笔试成绩。 输入格式 第1行两个整数nm5≤n≤50003≤m≤n,中间用一个空格隔开其中n表示报名参加笔试的选手总数m表示计划录取的志愿者人数。输入数据保证m*150%向下取整后小于等于n。 第2行到第n1行每行包括两个整数中间用一个空格隔开分别是选手的报名号k1000≤k≤9999和该选手的笔试成绩s1≤s≤100。数据保证选手的报名号各不相同。 输出格式 第1行有两个整数用一个空格隔开第1个整数表示面试分数线第2个整数为进入面试的选手的实际人数。 从第2行开始每行包括两个整数中间用一个空格隔开分别表示进入面试的选手的报名号和笔试成绩按照笔试成绩从高到低输出如果成绩相同则按报名号由小到大的顺序输出。 输入样例 6 3
1000 90
3239 88
2390 95
7231 84
1005 95
1001 88 输出样例 88 5
1005 95
2390 95
1000 90
1001 88
3239 88 参考答案
#includeiostream
#includecmath
#includealgorithm
using namespace std;
int n,m;
struct node{int hao;int score;bool operator(const node L)const{return scoreL.score||(scoreL.scorehaoL.hao);}
};
struct node ren[5005];
int main()
{cinnm;for(int i0;in;i){int hao,g;cinhaog;ren[i]{hao,g};}sort(ren,renn);int x(int)(m*1.5);int xianren[x-1].score;int sum0;coutxian;for(int i0;in;i){if(ren[i].scorexian) sum;}cout sumendl;for(int i0;in;i)if(ren[i].scorexian)coutren[i].hao ren[i].scoreendl;
} 3.单词接龙 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏现在我们已知一组单词且给定一个开头的字母要求出以这个字母开头的最长的“龙”每个单词都最多在“龙”中出现两次在两个单词相连时其重合部分合为一部分例如beast和astonish如果接成一条龙则变为beastonish另外相邻的两部分不能存在包含关系例如at和atide间不能相连。 输入格式 输入的第一行为一个单独的整数n(n20)表示单词数以下n行每行有一个单词只含有大写或小写字母长度不超过20输入的最后一行为一个单个字符表示“龙”开头的字母。你可以假定以此字母开头的“龙”一定存在。 输出格式 只需输出以此字母开头的最长的“龙”的长度。 输入样例 5
at
touch
cheat
choose
tact
a 输出样例 23 参考答案
#includeiostream
#includecstring
using namespace std;
const int N10005;
string all[N];
int n,book[N],sub[N][N],ans;
void dfs(string s,int u)
{int lens.size();ansmax(ans,len);book[u];for(int i1;in;i){if(book[i]2sub[u][i]){dfs(sall[i].substr(sub[u][i]),i);}}book[u]--;return ;
}
int main()
{cinn;for(int i1;in;i){cinall[i];}for(int i1;in;i)for(int j1;jn;j){string aall[i],ball[j];int lenaa.size(),lenbb.size();int lenmin(lena,lenb);for(int k1;klen;k){if(a.substr(a.size()-k,k)b.substr(0,k)){sub[i][j]k;break;}}} char head;cinhead;// coutheadendl;for(int i1;in;i)if(all[i][0]head)dfs(all[i],i);coutans;return 0;
} 4.对称二叉树 题目描述 如果二叉树的左右子树的结构是对称的即两棵子树皆为空或者皆不空则称该二叉树是对称的。编程判断给定的二叉树是否对称。 例如下图中的二叉树T1是对称的T2是不对称的。 二叉树用顺序结构给出若读到#则为空二叉树T1ABCDET2ABCD#E如果二叉树是对称的输出“Yes”,反之输出“No”。 输入格式 二叉树用顺序结构给出若读到#则为空。 输出格式 如果二叉树是对称的输出“Yes”,反之输出“No”。 输入样例 ABCDE 输出样例 Yes 参考答案
#includeiostream
using namespace std;
int main()
{string s;cins;int lens.size();s[len]#;int f0;for(int i1;ilen;i2){if((s[i]#s[i1]!#)||(s[i1]#s[i]!#)){f1;break;}}if(f1) coutNo;else coutYes;
} 5.英雄南昌欢迎您 题目描述 南昌城是一个英雄城也是一个旅游胜地每年都有成千上万的人前来观光。为方便游客公交公司在各个旅游景点及宾馆饭店等地都设置了巴士站并开通了一些单程巴士线路。每条单程巴士线路从某个巴士站出发依次途经若干个巴士站最终到达终点巴士站。 一名旅客最近到南昌来旅游他很想去滕王阁游玩但如果从他所在的饭店没有一路巴士可以直接到达滕王阁则他可能要先乘某一路巴士坐几站再下来换乘同一站台的另一路巴士, 这样换乘几次后到达滕王阁。 现在用整数1,2,…N 给南昌城的所有的巴士站编号约定这名旅客所在饭店的巴士站编号为1滕王阁巴士站的编号为N。 写一个程序帮助这名旅客寻找一个最优乘车方案,使他在从饭店乘车到滕王阁的过程中换车的次数最少。 输入格式 第一行有两个数字M和N(1≤M≤100 1N≤500表示开通了M条单程巴士线路总共有N个车站。从第二行到第M行依次给出了第1条到第M条巴士线路的信息。其中第i1行给出的是第i条巴士线路的信息从左至右按运行顺序依次给出了该线路上的所有站号相邻两个站号之间用一个空格隔开。 输出格式 只有一行。如果无法乘巴士从饭店到达滕王阁则输出N0否则输出你的程序所找到的最少换车次数换车次数为0表示不需换车即可到达。 输入样例 3 7
6 7
4 7 3 6
2 1 3 5 输出样例 2 参考答案
#includeiostream
#includecstring
using namespace std;
const int N1005;
int e[N][N],dist[N],book[N],shuzi[N];
char s[N];
const int inf0x3f3f3f3f;
int n,m;
void Dijkstra()
{book[1]1;for(int i1;in;i){int min_inf,u;for(int j1;jn;j){if(book[j]0dist[j]min_){min_dist[j];uj;}}book[u]1;for(int j1;jn;j){if(e[u][j]infdist[j]dist[u]e[u][j])dist[j]dist[u]e[u][j];}}
}
int main()
{cinmn;getchar();memset(e,0x3f,sizeof e);for(int i1;in;i)for(int j1;jn;j)if(ij) e[i][j]0;int k1;while(m--){k1;memset(shuzi,0,sizeof shuzi);memset(s,\0,sizeof s);cin.getline(s,sizeof s);for(int i0;istrlen(s);i){if(isdigit(s[i])){shuzi[k]shuzi[k]*10s[i]-0;}else k;}for(int i1;ik;i)for(int ji1;jk;j)e[shuzi[i]][shuzi[j]]1;}for(int i1;in;i){dist[i]e[1][i];book[i]0;} Dijkstra();if(dist[n]!inf) coutdist[n]-1;else coutNO;
} 6.时间转换 题目描述 给定一个以秒为单位的时间t要求用“H:M:S ”的格式来表示这个时间。H表示时间M表示分钟而S表示秒它们都是整数且没有前导的“0”。例如若t0则应输出是“0:0:0”若t3661则输出“1:1:1”。 输入格式 输入只有一行是一个整数t0t86399。 输出格式 输出只有一行是以“H:M:S ”的格式所表示的时间不包括引号。 输入样例1 0 输出样例1 0:0:0 输入样例2 5436 输出样例2 5436 参考答案
#includeiostream
using namespace std;
int main()
{int n;cinn;if(n0)printf(0:0:0);else{int hn/3600;int fn/60-h*60;int mn-h*3600-f*60;printf(%d:%d:%d,h,f,m);}
} 7.矩阵乘法 题目描述 给定一个N阶矩阵A输出A的M次幂M是非负整数 例如 A 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N、M1N30, 0M5表示矩阵A的阶数和要求的幂数 接下来N行每行N个绝对值不超过10的非负整数描述矩阵A的值 输出格式 输出共N行每行N个整数表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开 输入样例 2 2
1 2
3 4 输出样例 7 10
15 22 参考答案 #includeiostream
#includecstring
using namespace std;
const int N105;
int a[N][N],b[N][N],c[N][N];
int main()
{int n,m;cinnm;for(int i1;in;i)for(int j1;jn;j)cina[i][j];for(int i1;in;i)c[i][i]1;for(int i1;im;i){memset(b,0,sizeof b);for(int j1;jn;j)for(int j11;j1n;j1)for(int j21;j2n;j2)b[j][j1]c[j][j2]*a[j2][j1];memcpy(c,b,sizeof b);}for(int i1;in;i){for(int j1;jn;j){coutc[i][j] ;} if(in)coutendl;}
} 8. Huffuman树 题目描述 Huffman树在编码中有着广泛的应用。在这里我们只关心Huffman树的构造过程。 给出一列数{pi}{p0, p1, …, pn-1}用这列数构造Huffman树的过程如下 1. 找到{pi}中最小的两个数设为pa和pb将pa和pb从{pi}中删除掉然后将它们的和加入到{pi}中。这个过程的费用记为pa pb。 2. 重复步骤1直到{pi}中只剩下一个数。 在上面的操作过程中把所有的费用相加就得到了构造Huffman树的总费用。 本题任务对于给定的一个数列现在请你求出用该数列构造Huffman树的总费用。 例如对于数列{pi}{5, 3, 8, 2, 9}Huffman树的构造过程如下 1. 找到{5, 3, 8, 2, 9}中最小的两个数分别是2和3从{pi}中删除它们并将和5加入得到{5, 8, 9, 5}费用为5。 2. 找到{5, 8, 9, 5}中最小的两个数分别是5和5从{pi}中删除它们并将和10加入得到{8, 9, 10}费用为10。 3. 找到{8, 9, 10}中最小的两个数分别是8和9从{pi}中删除它们并将和17加入得到{10, 17}费用为17。 4. 找到{10, 17}中最小的两个数分别是10和17从{pi}中删除它们并将和27加入得到{27}费用为27。 5. 现在数列中只剩下一个数27构造过程结束总费用为510172759。 输入格式 输入的第一行包含一个正整数nn100。 接下来是n个正整数表示p0, p1, …, pn-1每个数不超过1000。 输出格式 输出用这些数构造Huffman树的总费用。 输入样例 5
5 3 8 2 9 输出样例 59 参考答案
#includeiostream
#includequeue
#includevector
using namespace std;
int main()
{int n;cinn;int x;priority_queueint,vectorint,greaterint heap;for(int i0;in;i) {cinx;heap.push(x);}int sum0;while(heap.size()1){int aheap.top();heap.pop();int bheap.top();heap.pop();sumab;heap.push(ab);}coutsum;
}