題目在此
這題的題目是要用ACGT四個字母自由排列(2<長度<100),並且那是環狀排列
而我們要做的是取出排列最小的方式(照字典序)
這題參考自BruceLee's UVA和sillyhair
首先先把給的環狀資料,每個排列方式都排一次
這裡用到了string::substr(_startpos_, _endpos_)這個函式,可以切一部分的string出來
若裡面只有一個數字,則是從該數字切到結尾
再來就是比較哪個最小
而直接比較string的特性,正好就是以字典序來比較,所以我們直接拿string做比較
以下為解
//UVa 1584
#include <iostream>
using namespace std;
int main(){
int t;
string data, result, excdata;
cin >> t;
while(t--){
cin >> data;
result = data;
for(int i=0; i<data.length(); i++){
excdata = data.substr(i)+data.substr(0,i);
if(excdata<result){
result=excdata;
}
}
cout << result <<endl;
}
}
沒有留言:
張貼留言