C++基礎題-a225: 明明愛排列

我不知道為何,在我除錯時都沒錯,然而我不是在除錯時就會多出一個 “98”。

#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;

int main(){
    int n;
    while(cin>>n){
	vector<vector<int> > st;vector<int> dt,b;int a,r=0;

	for(int i=0;i<n;i++){
	    cin>>a;
	    dt.push_back(a);
	    a=0;
	}
		
	//
	for(int i=0;i<n;i++){
            for(int temp,j=i+1;j<n;j++){
        	if(dt[i]%10>dt[j]%10){
        	    temp=dt[i];
        	    dt[i]=dt[j];
        	    dt[j]=temp;
        	}
            }
    	}
    	// 
    	{ 
    	    int i=0;
    	    int j=0;
	    while(i<n){
		j=i;
        	while(dt[i]%10==dt[j]%10){
        	    b.push_back(dt[j]);
        	    j++;
        	}
		st.push_back(b);
		b.clear();
        	i=j;
    	    }
    	    b.clear();
	}

	for(int k=0;k<st.size();k++){
	    for(int i=0;i<st[k].size();i++){
        	for(int temp,j=i+1;j<st[k].size();j++){	
        	    if(st[k].at(i)<st[k].at(j)){
        	    	temp=st[k].at(i);
        	    	st[k].at(i)=st[k].at(j);
        	    	st[k].at(j)=temp;
        	    	
        	    }
        	}
    	    }
	}

	for(int k=0;k<st.size();k++){
	    for(int i=0;i<st[k].size();i++){
        	cout<<st[k].at(i)<<" ";
    	    }
	}
	//for(auto i:st){
	//    for(auto j:i){
	//	cout<<j<<" ";
	//    }
	//}

	cout<<endl;
	st.clear();
	dt.clear();
	n=0;
	r++;
    }
    return 0;
}

題目出處 : https://zerojudge.tw/ShowProblem?problemid=a225

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *