PAT 團體程式設計天梯賽 L1-027 出租
阿新 • • 發佈:2019-02-20
下面是新浪微博上曾經很火的一張圖:
一時間網上一片求救聲,急問這個怎麼破。其實這段程式碼很簡單,index陣列就是arr陣列的下標,index[0]=2 對應 arr[2]=1,index[1]=0 對應 arr[0]=8,index[2]=3 對應 arr[3]=0,以此類推…… 很容易得到電話號碼是18013820100。
本題要求你編寫一個程式,為任何一個電話號碼生成這段程式碼 —— 事實上,只要生成最前面兩行就可以了,後面內容是不變的。
輸入格式:
輸入在一行中給出一個由11位數字組成的手機號碼。
輸出格式:
為輸入的號碼生成程式碼的前兩行,其中arr中的數字必須按遞減順序給出。
輸入樣例:18013820100
輸出樣例:int[] arr = new int[]{8,3,2,1,0};
int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};
如有疑問,歡迎留言。#include <iostream> #include <vector> using namespace std; int main() { string s; cin >> s; int a[10] = {0}; for(int i = 0; i < 11; i++) { a[s[i] - '0']++; }//桶排序 vector<int> arr; for(int i = 9; i >= 0; i--) { if(a[i] != 0) { arr.push_back(i); } }//出現過的數字逆序存入arr中 vector<int> index; for(int i = 0; i < 11; i++) { for(int j = 0; j < arr.size(); j++) { if((s[i] - '0') == arr[j]) { index.push_back(j); //遍歷原號碼生成index陣列 } } } //輸出結果 cout << "int[] arr = new int[]{" << arr[0]; for(int i = 1; i < arr.size(); i++) { cout << "," << arr[i]; } cout << "};" << endl << "int[] index = new int[]{" << index[0]; for(int i = 1; i < index.size(); i++) { cout << "," << index[i]; } cout << "};"; return 0; }