uva 120 - Stacks of Flapjacks (RE)
一直runtime error,这题要注意,有可能数字是重复的。
1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include <algorithm> 5 #include<stdlib.h> 6 using namespace std; 7 vector<int> q_numb; 8 int len; 9 void q_sort(vector<int> &numb){ 10 int max=0,pos=0,i=0; 11 for(vector<int>::iterator it=numb.begin();it!=numb.end();it++,i++){ 12 if(max<=*it){ 13 max=*it; 14 pos=i; 15 } 16 } 17 18 if(pos==numb.size()-1) 19 return; 20 if(numb[0]==max) 21 pos=0; 22 if(pos==0){ 23 cout<<len+1-numb.size()<<" "; 24 reverse(numb.begin(),numb.end()); 25 return; 26 } 27 if(pos<numb.size()-1){ 28 cout<<len-pos<<" "<<len-numb.size()+1<<" "; 29 reverse(numb.begin(),numb.end()-numb.size()+pos+1); 30 reverse(numb.begin(),numb.end()); 31 } 32 } 33 int main(){ 34 string l; 35 while(getline(cin,l)){ 36 cout<<l<<endl; 37 int start=0,end=-1; 38 39 while((start=l.find(" ",start))!=-1){ 40 string temp; 41 temp.assign(l,end+1,start-end); 42 q_numb.push_back(atoi(const_cast<char*>(temp.c_str()))); 43 end=start; 44 start+=1; 45 } 46 string temp; 47 temp.assign(l,end,l.size()-end); 48 q_numb.push_back(atoi(const_cast<char*>(temp.c_str()))); 49 len=q_numb.size(); 50 while(!q_numb.empty()){ 51 q_sort(q_numb); 52 q_numb.pop_back(); 53 } 54 cout<<"0"<<endl; 55 } 56 }
参考了网上的代码,把字符串读成整数的模块改了下立马OK,c++的精髓还要好好学学
1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include <algorithm> 5 #include<stdlib.h> 6 #include<sstream> 7 using namespace std; 8 vector<int> q_numb; 9 int len; 10 void q_sort(vector<int> &numb){ 11 int max=0,pos=0,i=0; 12 for(vector<int>::iterator it=numb.begin();it!=numb.end();it++,i++){ 13 if(max<=*it){ 14 max=*it; 15 pos=i; 16 } 17 } 18 19 if(pos==numb.size()-1) 20 return; 21 if(numb[0]==max) 22 pos=0; 23 if(pos==0){ 24 cout<<len+1-numb.size()<<" "; 25 reverse(numb.begin(),numb.end()); 26 return; 27 } 28 if(pos<numb.size()-1){ 29 cout<<len-pos<<" "<<len-numb.size()+1<<" "; 30 reverse(numb.begin(),numb.end()-numb.size()+pos+1); 31 reverse(numb.begin(),numb.end()); 32 } 33 } 34 int main(){ 35 string l; 36 while(getline(cin,l)){ 37 cout<<l<<endl; 38 int start=0,end=-1; 39 istringstream iss(l); 40 for(int interg;iss>>interg;q_numb.push_back(interg)); 41 42 len=q_numb.size(); 43 while(!q_numb.empty()){ 44 q_sort(q_numb); 45 q_numb.pop_back(); 46 } 47 cout<<"0"<<endl; 48 } 49 }
浙公网安备 33010602011771号