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 }

 

posted on 2013-12-26 14:41  云在心  阅读(141)  评论(0)    收藏  举报

导航