#22970: 為什麼會出現亂數?


estherhan5853@gmail.com (我就爛)

學校 : 不指定學校
編號 : 127038
來源 : [106.1.234.10]
最後登入時間 :
2022-05-02 22:22:18
a225. 明明愛排列 | From: [106.1.234.10] | 發表日期 : 2020-10-14 23:41

#include <iostream>
using namespace std;

int main() {
    int n;
    while(cin>>n){
        int arr[n];
        for(int i=0;i<n;i++)cin>>arr[i];

        for(int k=n;k>=1;k--){
            for(int i=0;i<k;i++){
                if(arr[i]%10>arr[i+1]%10)swap(arr[i],arr[i+1]);
                else if(arr[i]%10==arr[i+1]%10){
                    if(arr[i]<arr[i+1])swap(arr[i],arr[i+1]);
                }
            }
        }

        for(int i=0;i<n;i++)cout<<arr[i]<<" ";
        cout<<endl;
    }

return 0;
}
您的答案為: 51 13 21915 106 46 26 98
正確答案為: 51 13 106 46 26 98 38
 
#22974: Re:為什麼會出現亂數?


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a225. 明明愛排列 | From: [218.164.119.21] | 發表日期 : 2020-10-15 00:15

for(int k=n;k>=1;k--){
  for(int i=0;i<k;i++){

k = n~1, i = 0~(k-1) 可得 (i+1) = 1~k = 1~n,也就是可能取到 arr[n] 的值,不在你輸入的範圍內

 
ZeroJudge Forum