九度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(int i=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;
    }
    return 0;
}


题目二(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){
    int sum=0,len=strlen(s);
    for(int i=0;i<len;i++){
        sum+=(s[i]-'0');
    }
    return sum;
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF&&n){
        char s0[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;
    }
    return 0;
}

题目三(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()
{
    //数据越小优先级越高,当中第二个參数为容器类型,第二个參数为比較函数。
    int n;
    while(cin>>n&&n){
        priority_queue<int, vector<int>, greater<int> > q;
        int a,b;
        for(int i=0;i<n;i++){
            cin>>a;
            q.push(a);
        }
        int s=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;
    }
    return 0;
}

题目四(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()
{
    int n;
    while(cin>>n&&n){
        char c; int a;
        stack<int> sta;
        for(int i=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;
                    }
                    else cout<<"E"<<endl;
                break;
                default: break;
            }
        }
        cout<<endl;
    }
    return 0;
}

题目五(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(int j=1;j<=n;j++){//模拟推断全部边点
        if(a[i][j]==1&&vis[j]==0)//能联通,且未訪问
            dfs(j);
    }
}
int main()
{
    int b,c;
    while(cin>>n>>m&&n){
        memset(a,0,sizeof(a));
        memset(vis,0,sizeof(vis));
        for(int i=0;i<m;i++){
            cin>>b>>c;
            a[b][c]=a[c][b]=1;//无向图
        }
        dfs(1);//从第一个节点開始,原则上能够从随意结点開始
        int ok=1;
        for(int i=1;i<=n;i++){
            if(vis[i]==0){//不联通
                ok=0; break;
            }
        }
        if(ok) cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}

九度oj题目amp;吉大考研11年机试题全解相关推荐

  1. 九度OJ 题目1069:查找学生信息 随笔

    ** 九度OJ 题目1069:查找学生信息 ** 题目描述如下: 输入N个学生的信息,然后进行查询. 输入 输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N个学生的信息,信息 ...

  2. 九度OJ 题目1179:阶乘

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1179:阶乘 * 来源:http://ac.jo ...

  3. 九度OJ 题目1203:IP地址

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1203:IP地址 * 来源:http://ac. ...

  4. 九度OJ—题目1032:ZOJ

    题目描写叙述: 读入一个字符串.字符串中包括ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出.当某个字符用完时,剩下的仍然依照ZOJ的顺序输出. 输入: 题目包括多组用例,每组用例占一行,包括ZOJ ...

  5. 九度oj 题目1537:买卖股票

    题目描述: 给定一个大小为n的数组,数组的元素a[i]代表第i天的股票价格. 设计一个算法,计算在最多允许买卖k次(一买一卖记为一次)的条件下的最大收益. 需要注意的是,你不能同时拥有两份股票.也就是 ...

  6. 九度oj 题目1380:lucky number

    题目描述: 每个人有自己的lucky number,小A也一样.不过他的lucky number定义不一样.他认为一个序列中某些数出现的次数为n的话,都是他的lucky number.但是,现在这个序 ...

  7. python用一维数组存储学号和成绩、然后按成绩排序输出_九度oj 题目1196:成绩排序...

    算法数据结构(一)-B树 介绍 B树的目的为了硬盘快速读取数据(降低IO操作次树)而设计的一种平衡的多路查找树.目前大多数据库及文件索引,都是使用B树或变形来存储实现. 目录 为什么B树效率高 B树存 ...

  8. 九度OJ 题目1534:数组中第K小的数字(二分解)

    题目链接:点击打开链接 题目描述: 给定两个整型数组A和B.我们将A和B中的元素两两相加可以得到数组C. 譬如A为[1,2],B为[3,4].那么由A和B中的元素两两相加得到的数组C为[4,5,5,6 ...

  9. 九度oj 题目1411:转圈

    题目描述: 在一个有向图有n个顶点(编号从1到n),给一个起点s,问从起点出发,至少经过一条边,回到起点的最短距离. 输入: 输入包括多组,每组输入第一行包括三个整数n,m,s(1<=n< ...

  10. 【WA】九度OJ题目1435:迷瘴

    题目描述: 通过悬崖的yifenfei,又面临着幽谷的考验-- 幽谷周围瘴气弥漫,静的可怕,隐约可见地上堆满了骷髅.由于此处长年不见天日,导致空气中布满了毒素,一旦吸入体内,便会全身溃烂而死. 幸好y ...

最新文章

  1. 我们是移动的韭菜么?似乎程序员去哪里上班,哪里房价就贵起来了?扎心......
  2. 201671010456-张琼 实验二 词频统计软件项目报
  3. 命令编写注册表文件修改注册表项
  4. 北京大学c语言试题及答案,北大网络教育(计算机专业)C程序设计作业答案
  5. boost 单io_serverce 异步多线程资源保护代码
  6. 为什么一些手机厂商要砍掉呼吸灯?
  7. 新时代白领必备的两大“新”能力,你有吗?
  8. 在centos7环境下运行.exe文件
  9. 30封外贸邮件模板,外贸人速收藏!
  10. 关于GPS信息在谷歌地图上实时更新位置信息的问题
  11. python 今日头条视频自动上传_抖音视频怎么上传到今日头条?这个软件可一键操作很方便...
  12. vmware虚拟服务器数据备份,爱数VMware虚拟化平台备份恢复方案.pdf
  13. 陈艾盐:春燕百集访谈节目第二十集
  14. EasyUI入门9 EasyUI+NPOI+QrCode实现带二维码复杂格式excel文件导出
  15. 以程序员的视角带你看西安
  16. Json的介绍与使用
  17. 求一款简单高效的快递查询软件
  18. 网络发现不能启用,无法共享其他机器的解决办法
  19. ffmpeg转化视频格式 去水印
  20. Scanner、Random和 ArrayList集合的基本使用规则

热门文章

  1. 规则绝对公平时,社会财富的流向谁?
  2. 《智能优化算法及其MATLAB实现》书籍出版啦
  3. modis数据产品行列号以及数据行列号
  4. Java设计模式------工厂模式-------工厂方法模式
  5. Spring-01-IOC控制反转/DI依赖注入
  6. Flutter之路由系列之Route
  7. java中jsp table标签属性_JSP自定义标签-属性
  8. oracle优先顺序取值,oracle取值函数
  9. PG Vs MySQL ,到底谁更强?
  10. 软件开发方法之敏捷开发,你用了么?