杭電OJ1040解題報告

qq_25810195發表於2020-09-26

杭電OJ1040解題報告

問題描述

這些天來,我在思考一個問題,我怎樣才能得到像a +B這樣簡單的問題?做這樣的事是相當困難的。當然,我是在很多個晚上都醒著的時候得到的。給你一些整數,你的任務是將這些數字升序(升序)。你應該知道現在這個問題有多簡單!祝你好運

輸入

輸入包含多個測試用例。輸入的第一行是單個整數T,它是測試用例的數量。T測試用例如下。每個測試用例包含一個整數N (1<=N<=1000要排序的整數的數量),然後N個整數跟隨在同一行中。
它保證所有的整數都在32-int的範圍內。

輸出

對於每種情況,列印排序結果,一行一個情況。

樣例輸入

2
3 2 1 3
9 1 4 7 2 5 8 3 6 9

樣例輸出

1 2 3
1 2 3 4 5 6 7 8 9

問題分析

核心是一個簡單的氣泡排序就能解決的問題,但按照題目的要求來控制格式花費了成倍的時間。首先要設定一個“T”來決定有多少個可供測試的樣例,然後是設定一個m,定義每組資料的長度。其中重要的是m要和每組資料在同一行;在輸出時,要把每個陣列的a[0],單獨輸出,避免隱形空格

程式程式碼

#include <iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
   int t,i,j,a[1004],m,temp;
   scanf("%d",&t);

   while(t--){
       scanf("%d",&m);
    for(i=0;i<m;i++)
     {  //i=0;
        scanf("%d",&a[i]);
     }

        for(i=0;i<m;i++) /* 冒泡法排序 */
        for(j=0;j<m-i-1;j++)
        if(a[j]>a[j+1])
        {
            temp=a[j];/* 交換 */
            a[j]=a[j+1];
            a[j+1]=temp;
        }
           printf("%d",a[0]);/**控制格式,使最後沒有隱形空格*/
           for(i=1;i<m;i++)
            printf(" %d",a[i]);
            printf("\n");
     }
    return 0;
}

演算法設計描述

1、定義一個T,做成while迴圈,決定每個測試樣例中有多少組資料,
2、定義一個m,決定每組需要排序的資料長度。
3、氣泡排序。
4、輸出並控制格式。

結果截圖

在這裡插入圖片描述

相關文章