1. 程式人生 > 其它 >pta L1-027 出租 (20 分)

pta L1-027 出租 (20 分)

題目連結:https://pintia.cn/problem-sets/994805046380707840/problems/994805107638517760;

具體思路:

根據題目要求,要先輸出降序且不重複的數字元素,我們很容易想到用集合,當然,需要注意的是,在這裡採用了字串輸入,在一定程度上減少了記憶體與時間消耗;

在者,輸出第二個陣列的時候,我們可以採取這樣的策略:

在輸出第一個集合的時候,用一個數組來記錄這個集合的元素,那這樣,用這個集合的元素和原來數字直接進行匹配即可,如果相同就把下標存起來,最後輸出就可以了

Talk is cheap. Show me the code.

 1 #include<bits/stdc++.h>//
ptaL1-027 出租 2 using namespace std; 3 string s;//輸入數字 4 vector<char>v1;//用來檢查是否匹配,即經過set排序之後輸出時再把數字存進去 5 vector<int >v2;//最後用來輸出index下標 6 int main() 7 { 8 std::ios::sync_with_stdio(false); 9 set<char>::iterator it;//迭代器,相當於指標,set訪問需要迭代器,map,list同 10 set<char>c;//
集合,自動排序加判重 11 cin>>s; 12 for(register int i=0;i<s.length();i++) 13 { 14 c.insert(s[i]); 15 } 16 cout<<"int[] arr = new int[]{"; 17 for(it=--c.end();it!=c.begin();it--)//為了好輸出少輸出一個 18 { 19 cout<<*it<<","; 20 v1.push_back(*it);//
入庫 21 } 22 cout<<*it<<"};"<<endl;//補全 23 v1.push_back(*it); 24 for(int i=0;i<s.length();i++) 25 { 26 for(register int j=0;j<v1.size();j++) 27 { 28 if(s[i]==v1[j]) 29 { 30 v2.push_back(j);//匹配,如果相同則將下標入庫等待輸出 31 break;//找到相同即可,找到後停止 32 } 33 } 34 } 35 cout<<"int[] index = new int[]{"; 36 for(register int i=0;i<v2.size();i++) 37 { 38 cout<<v2[i]; 39 if(i<v2.size()-1) 40 cout<<","; 41 } 42 cout<<"};"; 43 return 0; 44 }