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

九度OJ&北郵機試題(2010計算機)

編輯:關於C++

題目一、九度OJ-1169:比較奇偶數個數

www.2cto.com

 

題目描述:

第一行輸入一個數,為n,第二行輸入n個數,這n個數中,如果偶數比奇數多,輸出NO,否則輸出YES。

輸入:

輸入有多組數據。
每組輸入n,然後輸入n個整數(1<=n<=1000)。

輸出:

如果偶數比奇數多,輸出NO,否則輸出YES。

樣例輸入:
5
1 5 2 4 3
樣例輸出:
YES
直接來代碼:

 

 

AC代碼:

 

/**
  *@xiaoran
  */
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
using namespace std;
int main()
{
	int a,even,odd,n;
	while(cin>>n){
        even=odd=0;
        for(int i=0;i>a;
            if(a%2) even++;
            else odd++;
        }
        if(odd>even) cout<

題目二、九度OJ-1170:找最小數

 

http://ac.jobdu.com/problem.php?pid=1170

 

題目描述:

第一行輸入一個數n,1 <= n <= 1000,下面輸入n行數據,每一行有兩個數,分別是x y。輸出一組x y,該組數據是所有數據中x最小,且在x相等的情況下y最小的。

輸入:

輸入有多組數據。 每組輸入n,然後輸入n個整數對。

輸出:

輸出最小的整數對。

樣例輸入:
5  
3 3  
2 2  
5 5  
2 1  
3 6
樣例輸出:
2 1
不解釋,AC代碼

 

 

/**
  *@xiaoran
  *排序或者直接比較,排序O(nlogn),空間O(2n),直接O(n),空間O(1)
  */
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
using namespace std;
int main()
{
    int n,x,y,xmin,ymin;
    while(cin>>n){
        cin>>xmin>>ymin;
        for(int i=1;i>x>>y;
            if(x

題目三、九度OJ-1171:C翻轉

 

http://ac.jobdu.com/problem.php?pid=1171

 

題目描述:

首先輸入一個5 * 5的數組,然後輸入一行,這一行有四個數,前兩個代表操作類型,後兩個數x y代表需操作數據為以x y為左上角的那幾個數據。

操作類型有四種: 1 2 表示:90度,順時針,翻轉4個數 1 3 表示:90度,順時針,翻轉9個數 2 2 表示:90度,逆時針,翻轉4個數 2 3 表示:90度,逆時針,翻轉9個數

輸入:

輸入有多組數據。 每組輸入一個5 * 5的數組,然後輸入一行,這一行有四個數,前兩個代表操作類型,後兩個數x y代表需操作數據為以x y為左上角的那幾個數據。

輸出:

輸出翻轉後的數組。

樣例輸入:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
1 3 1 1
樣例輸出:
11 6 1 4 5
12 7 2 9 10
13 8 3 14 15
16 17 18 19 20
21 22 23 24 25
題目分析:

 

二維數組模擬的問題,仔細想都能搞定。

 

AC代碼:

 

#include
#include
using namespace std;
int a[10][10],b[10][10];
//ok表示旋轉方式,x,y,表示旋轉數組的左上角下標,k表示旋轉個數
void XuanZhuan(int ok,int k,int x,int y){
    memcpy(b,a,sizeof(a));
    if(ok==2){//逆時針旋轉
        int ky,kx=x;
        for(int j=y;j=0;i--){
                a[i][j]=b[kx][ky++];
            }
            kx++;
        }
    }
    else if(ok==1){//順時針旋轉
        int ky,kx=x+k-1;
        for(int j=y;j>a[1][1]){
        for(int i=1;i<=5;i++){
            for(int j=1;j<=5;j++){
                if((i+j)!=2) cin>>a[i][j];
            }
        }
        cin>>ok>>k>>x>>y;
        XuanZhuan(ok,k,x,y);
        for(int i=1;i<=5;i++){
            for(int j=1;j<=5;j++){
                if(j!=5) cout<

題目四、九度OJ-1172:哈夫曼樹

 

http://ac.jobdu.com/problem.php?pid=1172

 

題目描述:

哈夫曼樹,第一行輸入一個數n,表示葉結點的個數。需要用這些葉結點生成哈夫曼樹,根據哈夫曼樹的概念,這些結點有權值,即weight,題目需要輸出所有結點的值與權值的乘積之和。

輸入:

輸入有多組數據。 每組第一行輸入一個數n,接著輸入n個葉節點(葉節點權值不超過100,2<=n<=1000)。

輸出:

輸出權值。

樣例輸入:
5  
1 2 2 5 9
樣例輸出:
37
題目分析:

 

可以建立哈弗曼樹,但是題目只讓求權值,直接上優先隊列就行了,當然也可以排序,因為數據太少,怎麼都行。

 

AC代碼:

 

/**
  *@xiaoran
  *優先隊列
  */
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
using namespace std;
int main()
{
    int n;
    while(cin>>n){
        priority_queue,greater >  p;
        int ans=0,x;
        for(int i=0;i>x;
            p.push(x);
        }
        while(p.size()>1){
            int a=p.top();
            p.pop();
            int b=p.top();
            p.pop();
            ans+=a+b;
            p.push(a+b);
        }
        cout<

 

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