九度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题目&amp;吉大考研10年机试题全解

    吉大考研机试2010年题目 题目一(jobdu1478:三角形的边).    http://ac.jobdu.com/problem.php?pid=1478 给出三个正整数,计算最小的数加上次小的数 ...

  2. 九度oj 题目1190:大整数排序

    题目1190:大整数排序 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4142 解决:1867 题目描述: 对N个长度最长可达到1000的数进行排序. 输入: 输入第一行为一个整数N,( ...

  3. 九度oj 题目1125:大整数的因子

    题目描述: 已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k. 输入: 若干个非负整数c,c的位数<=30每行一个c,当c=-1时中止 ( ...

  4. 九度oj 题目1262:Sequence Construction puzzles(I)_构造全递增序列

    题目描述: 给定一个整数序列,请问如何去掉最少的元素使得原序列变成一个全递增的序列. 输入: 输入的第一行包括一个整数N(1<=N<=10000). 接下来的一行是N个满足题目描述条件的整 ...

  5. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  6. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

  7. 九度oj 题目1007:奥运排序问题

    九度oj 题目1007:奥运排序问题   恢复 题目描述: 按要求,给国家进行排名. 输入:                        有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...

  8. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  9. 九度OJ题目1105:字符串的反码

    tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...

随机推荐

  1. POJ1251 Jungle Roads 【最小生成树Prim】

    Jungle Roads Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19536   Accepted: 8970 Des ...

  2. CSDN个人空间能再烂吗?

    CSDN空间你敢再烂么? 从CSDN博客跳转到CSDN个人空间的入口还算明显,可是想从个人空间跳转到博客,可真是众里寻他千百度.跳转接口怎么寻都寻不到.根本没有这个跳转的入口.唯一的途径仅仅能从写博文 ...

  3. bonecp使用数据源

    bonecp.properties jdbc.driverClass=oracle.jdbc.driver.OracleDriver jdbc.jdbcUrl=jdbc:oracle:thin:@19 ...

  4. Linux下一个CD翻录 创CUE 压缩flac攻略

    于Windows我们通常使用较低EAC翻录压缩发生器CUE找工作的步骤,但在Linux在稍微有点麻烦.每一步,我们需要自己做.经过我的反复尝试寻找和总结了相当不错的方法,使用软件和步骤如下面的. 使用 ...

  5. MVC中的Views下面的视图放到Views文件夹外

    实战:把ASP.NET MVC中的Views下面的视图放到Views文件夹外   园子里写的文章的都是把控制器从传统的项目中的Controllers拿出来单独放,但很少几乎没有把视图从Views拿出去 ...

  6. Linux下is not in the sudoers file(转)

    用sudo时提示"xxx is not in the sudoers file. This incident will be reported.其中XXX是你的用户名,也就是你的用户名没有权 ...

  7. linux下一个apache+tomcat负载均衡和集群

    先说一下我的环境 一个ubuntu虚拟机, 一个apache2.2示例 两tomcat1.7示例 1.安装apacheserver sudo apt-get install apache2 假设要重新 ...

  8. 深和学习导航CSS样式

    一个很容易理解,具体导航栏CSS授课风格 诚奉献给朋友: 原文地址:点击这里.

  9. JQuery插件开发初探——图片轮播

    在熟悉了插件开发的结构以后,自己尝试着做了一个稍微复杂一点的小功能:图片轮播插件. 由于之前使用的一款图片轮播插件,性能不高,页面加载的时候需要载入全部的图片,因此速度很慢. 通过自己做这个小插件,能 ...

  10. android 性能測试iozone篇

    一:简单介绍 iozone是一个文件系统的benchmark工具, 用于測试不同的操作系统中文件系统的读写性能, 能够測试下面13种模式 0=write/rewrite 1=read/re-read ...