程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 九度OJ&北郵機試題(2011網院)

九度OJ&北郵機試題(2011網院)

編輯:關於C++

題目一、九度OJ-1177:查找

 www.2cto.com

題目描述:

讀入一組字符串(待操作的),再讀入一個int n記錄記下來有幾條命令,總共有2中命令:1、翻轉 從下標為i的字符開始到i+len-1之間的字符串倒序;2、替換 命中如果第一位為1,用命令的第四位開始到最後的字符串替換原讀入的字符串下標 i 到 i+len-1的字符串。每次執行一條命令後新的字符串代替舊的字符串(即下一條命令在作用在得到的新字符串上)。

命令格式:第一位0代表翻轉,1代表替換;第二位代表待操作的字符串的起始下標int i;第三位表示需要操作的字符串長度int len。

輸入:

輸入有多組數據。
每組輸入一個字符串(不大於100)然後輸入n,再輸入n條指令(指令一定有效)。

輸出:

根據指令對字符串操作後輸出結果。

樣例輸入:
bac
2
003
112as
樣例輸出:
cab
cas

題目分析:

字符串問題,做了這幾個學校的機試題,發現總是靠字符串的模擬問題,這種題目不難,但是要細心,主要考查學生的基礎。

 

AC代碼:

 

/**
  *@xiaoran
  *字符串問題
  */
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
using namespace std;
char s[105];
void str(char *ss){//命令第一位0,翻轉
    int flag,k=0,i,len,j;
    flag=ss[k++]-'0';
    i=ss[k++]-'0';
    len=ss[k++]-'0';
    if(flag==0){//轉
        j=i+len-1;
        while(i<=j){
            char t=s[i];
            s[i]=s[j];
            s[j]=t;
            ++i; --j;
        }
    }
    else if(flag==1){//替換
        //int len1=strlen(ss);
        for(j=i;j<=i+len-1;j++){
            s[j]=ss[k++];
        }
    }
}
int main()
{
    char ss[105];
    while(scanf(%s,s)!=EOF){
        int n;
        scanf(%d,&n);
        for(int i=0;i

題目二、九度OJ-1178:復數集合

www.2cto.com

題目描述:

一個復數(x+iy)集合,兩種操作作用在該集合上:

1、Pop 表示讀出集合中復數模值最大的那個復數,如集合為空 輸出 empty ,不為空就輸出最大的那個復數並且從集合中刪除那個復數,再輸出集合的大小SIZE;

2 Insert a+ib 指令(a,b表示實部和虛部),將a+ib加入到集合中 ,輸出集合的大小SIZE;

最開始要讀入一個int n,表示接下來的n行每一行都是一條命令。

輸入:

輸入有多組數據。
每組輸入一個n(1<=n<=1000),然後再輸入n條指令。

輸出:

根據指令輸出結果。

樣例輸入:
3
Pop
Insert 1+i2
Pop
樣例輸出:
empty
SIZE = 1
1+i2
SIZE = 0
題目分析:

題意不清楚,錯了n次,題目很簡單,可以優先隊列,也可以vectoe向量進行模擬,這裡給出兩種代碼,注意輸入到文件尾結束。

 

AC代碼:

/**
  *@xiaoran
  *自定義優先序列,過不了我也是醉了
  *還是來排序吧
  */
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
using namespace std;
struct node{//自定義結構體中的優先級
    string s;
    int x,y;
    bool operator <(const node a) const
    {
        if (x*x+y*y==a.x*a.x+a.y*a.y) return y>a.y;
        else return x*x+y*y=0;i--){
        if(s[i]==' ') continue;
        if(s[i]=='i') break;
        y=y+(s[i]-'0')*k;
        k*=10;
    }
    return y;
}
int main()
{
    int t;
    string ss,s;
    while(cin>>t){
        priority_queue pq;
        while(t--){
            cin>>s;
            if(s==Pop){
                if(pq.empty()){
                    cout<>ss;
                node n;
                n.s=ss;
                n.x=getx(ss);
                n.y=gety(ss);
                //cout<s1.a*s1.a+s1.b*s1.b) return 1;
    else if(s.a*s.a+s.b*s.b==s1.a*s1.a+s1.b*s1.b&&s.b vec;
        while(t--){
            char s[105],ss[105];
            scanf(%s,s);
            if(s[0]=='P'){
                if(vec.size()==0){
                    printf(empty
);
                }else{
                    printf(%d+i%d
,vec[0].a,vec[0].b);
                    vec.erase(vec.begin());//取出第一個
                    printf(SIZE = %d
,vec.size());
                }
            }
            else if(s[0]=='I'){
                Node n;
                scanf(%d+i%d,&n.a,&n.b);
                vec.push_back(n);
                sort(vec.begin(),vec.end(),cmp);
                printf(SIZE = %d
,vec.size());
            }
        }
    }
    return 0;
}
**/


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved