#31548: 完成我的夢想了!!!


jason096727@gmail.com (Jason Ho)

學校 : 高雄市苓雅區福東國民小學
編號 : 189939
來源 : [150.116.71.76]
最後登入時間 :
2023-07-15 21:32:51
a528. 大數排序 | From: [150.116.71.227] | 發表日期 : 2022-08-06 22:07

 

把正數的排列分式用在負數上再倒著輸出啦😏

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    while (cin >> n){
        string num[n];
        for (int i=0; i<n; i++){
            cin >> num[i];
        }
        sort (num, num+n);        //引用大神的話:字串排序從最前面開始,一個個字元比較,ex : "2"會大於"10"。所以還需比較字串的長度
        for (int i=0; i<n; i++){
            for (int j=i+1; j<n; j++){
                if (num[i].length()>num[j].length()&&(num[i])[0]!='-'&&(num[j])[0]!='-' || num[i].length()>num[j].length()&&(num[i])[0]=='-'&&(num[j])[0]=='-'){
                    string temp=num[i];
                    num[i]=num[j];
                    num[j]=temp;
                }        //字串長度比較:if(正負數分開排列,因為負數多了'-')
                else if (num[i].length()==num[j].length()&&(num[i])[0]!='-'&&(num[j])[0]!='-' || num[i].length()==num[j].length()&&(num[i])[0]=='-'&&(num[j])[0]=='-'){
                    if (num[i]>num[j]){
                         string temp=num[i];
                        num[i]=num[j];
                        num[j]=temp;
                    }
                }        //處理字串一樣長但在字串長度比較順序被交換的問題
            }
        }
        int i;
        for (i=0; i<n; i++){
            if ((num[i])[0]!='-'){
                break;
            }
        }        //找到開始有正數num的索引值 i
        for (int j=i-1; j>=0; j--){
            cout << num[j] << '\n';
        }        //倒著輸出負數
        for (int k=i; k<n; k++){
            cout << num[k] << '\n';
        }        //輸出正數
    }
    return 0;
}

 
#31549: Re: 完成我的夢想了!!!


jason096727@gmail.com (Jason Ho)

學校 : 高雄市苓雅區福東國民小學
編號 : 189939
來源 : [150.116.71.76]
最後登入時間 :
2023-07-15 21:32:51
a528. 大數排序 | From: [150.116.71.227] | 發表日期 : 2022-08-06 22:15

 

把正數的排列分式用在負數上再倒著輸出啦😏

#include

using namespace std;

int main()
{
    int n;
    while (cin >> n){
        string num[n];
        for (int i=0; i
            cin >> num[i];
        }
        sort (num, num+n);        //引用大神的話:字串排序從最前面開始,一個個字元比較,ex : "2"會大於"10"。所以還需比較字串的長度
        for (int i=0; i
            for (int j=i+1; j
                if (num[i].length()>num[j].length()&&(num[i])[0]!='-'&&(num[j])[0]!='-' || num[i].length()>num[j].length()&&(num[i])[0]=='-'&&(num[j])[0]=='-'){
                    string temp=num[i];
                    num[i]=num[j];
                    num[j]=temp;
                }        //字串長度比較:if(正負數分開排列,因為負數多了'-')
                else if (num[i].length()==num[j].length()&&(num[i])[0]!='-'&&(num[j])[0]!='-' || num[i].length()==num[j].length()&&(num[i])[0]=='-'&&(num[j])[0]=='-'){
                    if (num[i]>num[j]){
                         string temp=num[i];
                        num[i]=num[j];
                        num[j]=temp;
                    }
                }        //處理字串一樣長但在字串長度比較順序被交換的問題
            }
        }
        int i;
        for (i=0; i
            if ((num[i])[0]!='-'){
                break;
            }
        }        //找到開始有正數num的索引值 i
        for (int j=i-1; j>=0; j--){
            cout << num[j] << '\n';
        }        //倒著輸出負數
        for (int k=i; k
            cout << num[k] << '\n';
        }        //輸出正數
    }
    return 0;
}

拍謝

方式  方式  方式

 
ZeroJudge Forum