九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解)
吉大考研机试2011年题目:
题目一(jobdu1105:字符串的反码)、 http://ac.jobdu.com/problem.php?pid=1105
一个二进制数,将其每一位取反,称之为这个数的反码。以下我们定义一个字符的反码。假设这是一个小写字符,则它和字符'a’的距离与它的反码和字符'z’的距离同样;假设是一个大写字符,则它和字符'A’的距离与它的反码和字符'Z’的距离同样;假设不是上面两种情况,它的反码就是它自身。
比如:'a’的反码是'z’;'c’的反码是'x’;'W’的反码是'D’;'1’的反码还是'1’;'$'的反码还是'$'。一个字符串的反码定义为其全部字符的反码。我们的任务就是计算出给定字符串的反码。输入!结束。
题目分析:此题目是字符串模拟问题,至须要依据题意模拟就可以,对于大写和小写推断就可以
if(大写字符) s[i] = 'A' + 'Z' - s[i];
if(小写字符) s[i] = 'a' + 'z' - s[i];
AC代码:
#include<iostream>#include<string>#include<cctype>//调用库函数,读者能够自己写using
namespace std;int
main(){ string s; while(getline(cin,s)){//注意空格 if(s=="!")
break; for(inti=0;i<s.length();i++){ if(isupper(s[i])){//是大写字母 s[i]='A'+'Z'-s[i]; } if(islower(s[i])){//是小写字母 s[i]='a'+'z'-s[i]; } } cout<<s<<endl; } return0;}
题目二(jobdu1106:数字之和)、 http://ac.jobdu.com/problem.php?pid=1106
对于给定的正整数 n,计算其十进制形式下全部位置数字之和,并计算其平方的各位数字之和。
题目分析:把整数转化成字符串,逐个累加每一位数字,注意字符转化为整数仅仅须要减去‘0’,即减去‘0’的ASCII值
AC代码:
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using
namespace std;int
CountSum(char *s){ intsum=0,len=strlen(s); for(inti=0;i<len;i++){ sum+=(s[i]-'0'); } returnsum;}int
main(){ intn; while(scanf("%d",&n)!=EOF&&n){ chars0[20],s1[20]; sprintf(s0,"%d",n);//itoa(n,s0,10);写入字符串 sprintf(s1,"%d",n*n); printf("%d %d\n",CountSum(s0),CountSum(s1)); //cout<<CountSum(s0)<<" "<<CountSum(s0)<<endl; } return0;}题目三(jobdu1107:搬水果)、 http://ac.jobdu.com/problem.php?pid=1107
小明能够把两堆水果合并到一起,消耗的体力等于两堆水果的重量之和。当然经过 n‐1 次合并之后,就变成一堆了。小明在合并水果时总共消耗的体力等于每次合并所耗体力之和。你的任务是设计出合并的次序方案,使小明耗费的体力最少,并输出这个最小的体力耗费值。比如有 3 种水果,数目依次为 1,2,9。能够先将 1,2 堆合并,新堆数目为3,耗费体力为 3。然后将新堆与原先的第三堆合并得到新的堆,耗费体力为 12。所以小明总共耗费体力=3+12=15,能够证明 15 为最小的体力耗费值。
题目分析:
此题在考优先队列,只是也不用自己写,STL里面有优先队列priority_queue
AC代码:
/** *优先队列问题 */#include<iostream>#include<queue>#include<algorithm>using
namespace std;int
main(){ //数据越小优先级越高,当中第二个參数为容器类型,第二个參数为比較函数。 intn; while(cin>>n&&n){ priority_queue<int, vector<int>,
greater<int> > q; inta,b; for(inti=0;i<n;i++){ cin>>a; q.push(a); } ints=0; while(q.size()>1){ a=q.top(); q.pop(); b=q.top(); q.pop(); s+=a+b; q.push(a+b); } cout<<s<<endl; } return0;}题目四(jobdu1108:堆栈的使用)、 http://ac.jobdu.com/problem.php?pid=1108
依据给定的字符,模拟栈的操作。每行的第一个字符可能是'P’或者'O’或者'A’;假设是'P’,后面还会跟着一个整数,表示把这个数据压入堆栈;假设是'O’,表示将栈顶的值 pop 出来,假设堆栈中没有元素时,忽略本次操作;假设是'A’,表示询问当前栈顶的值,假设当时栈为空,则输出'E'。堆栈開始为空。
题目分析:仅仅须要把各个字符与栈的操作相相应就可以。
AC代码:
#include<iostream>#include<stack>using
namespace std;int
main(){ intn; while(cin>>n&&n){ charc; int
a; stack<int> sta; for(inti=0;i<n;i++){ cin>>c; switch(c){ case'P': cin>>a; sta.push(a); break; case'O': if(!sta.empty()){//非空输出 sta.pop(); } break; case'A': if(!sta.empty()){//非空输出 cout<<sta.top()<<endl; } elsecout<<"E"<<endl; break; default:
break; } } cout<<endl; } return0;}题目五(jobdu1109:连通图)、
给定一个无向图和当中的全部边,推断这个图是否全部顶点都是连通的。
题目分析:简单的dfs()+标记搜索
AC代码:
/** *深度优先遍历+訪问标记 */#include<iostream>#include<cstring>using
namespace std;int
m,n,a[1001][1001];//记录边,a[i][j]=1;表示联通int
vis[1001];//记录定点是否被訪问int
dfs(int i){ vis[i]=1;//先做标记,已訪问 for(intj=1;j<=n;j++){//模拟推断全部边点 if(a[i][j]==1&&vis[j]==0)//能联通,且未訪问 dfs(j); }}int
main(){ intb,c; while(cin>>n>>m&&n){ memset(a,0,sizeof(a)); memset(vis,0,sizeof(vis)); for(inti=0;i<m;i++){ cin>>b>>c; a[b][c]=a[c][b]=1;//无向图 } dfs(1);//从第一个节点開始,原则上能够从随意结点開始 intok=1; for(inti=1;i<=n;i++){ if(vis[i]==0){//不联通 ok=0;
break; } } if(ok) cout<<"YES"<<endl; elsecout<<"NO"<<endl; } return0;}九度oj题目&吉大考研11年机试题全解的更多相关文章
- 九度oj题目&吉大考研10年机试题全解
吉大考研机试2010年题目 题目一(jobdu1478:三角形的边). http://ac.jobdu.com/problem.php?pid=1478 给出三个正整数,计算最小的数加上次小的数 ...
- 九度oj 题目1190:大整数排序
题目1190:大整数排序 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4142 解决:1867 题目描述: 对N个长度最长可达到1000的数进行排序. 输入: 输入第一行为一个整数N,( ...
- 九度oj 题目1125:大整数的因子
题目描述: 已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k. 输入: 若干个非负整数c,c的位数<=30每行一个c,当c=-1时中止 ( ...
- 九度oj 题目1262:Sequence Construction puzzles(I)_构造全递增序列
题目描述: 给定一个整数序列,请问如何去掉最少的元素使得原序列变成一个全递增的序列. 输入: 输入的第一行包括一个整数N(1<=N<=10000). 接下来的一行是N个满足题目描述条件的整 ...
- hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 九度OJ 题目1384:二维数组中的查找
/********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...
- 九度oj 题目1007:奥运排序问题
九度oj 题目1007:奥运排序问题 恢复 题目描述: 按要求,给国家进行排名. 输入: 有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ题目1105:字符串的反码
tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...
随机推荐
- [原创].NET 分布式架构开发实战之二 草稿设计
原文:[原创].NET 分布式架构开发实战之二 草稿设计 .NET 分布式架构开发实战之二 草稿设计 前言:本篇之所以称为草稿设计,是因为设计的都是在纸上完成的.反映了一个思考的过程. 本篇的议题如下 ...
- 如何更好地理解和使用Github
只知道几乎在顶部看到一对Github用通俗易懂的解释: 你或许不懂怎样造一辆凯迪拉克,但你能够驾驶凯迪拉克. 你或许不懂Evernote是用什么技术做出来的,但你也能够使用Evernote. 你或许不 ...
- poj2524
说来惭愧啊..现在才会并查集.我竟然给我妈妈讲明白并查集怎么回事了- - #define _CRT_SECURE_NO_WARNINGS #include <iostream> using ...
- POJ3213(矩阵乘法)
PM3 Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 3036 Accepted: 1059 Description ...
- 更改Calendar背景图(使用系统映像选择器)
最近提出的申请,主接口是一个历,网上有很多第三方的日历控件,有使用ImageView实现,有使用GridView实现,它的优点是控制的灵活性. 而我选择使用本机CalendarView,关于这个控件, ...
- TFS:TF30042 数据库已满 处理方法
原文:TFS:TF30042 数据库已满 处理方法 今天早上,公司打来电话,说TFS(Team Foundation Server)微软源代码管理软件签入不了,报错:TF30042 数据库已满. 经过 ...
- Property 和 Attribute 的区别(转)
property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute:特性),但实际上,二者是不同的东西,属于不同的范畴. property ...
- UVA 10529 Dumb Bones 可能性dp 需求预期
主题链接:点击打开链接 题意: 要在一条直线上摆多米诺骨牌. 输入n, l, r 要摆n张排,每次摆下去向左倒的概率是l, 向右倒的概率是r 能够採取最优策略.即能够中间放一段.然后左右两边放一段等, ...
- Android MotionEvent事故响应机制
于android于.主要活动包括点击.按.拖累.滑动等操作,这些构成了Android事件响应,总体而言,,所有事件由例如以下三部分构成的基础: 按(action_down),搬家(action_mov ...
- java多线程学习(一)
一.操作系统线程和进程的概念 线程是指进程中的一个运行单元,这个过程中也可调度实体. 线程与进程的差别: (1)地址空间:线程为进程内的一个运行单元.进程至少有一个线程(进程的主线程):进程的全部线程 ...