看到網上有人用的手算解法,還有相關**。(⊙o⊙)…還是列舉適合我,節約腦力。
思路大概就是:
1、手鍊可以轉動,所以儲存時將字串加倍,這樣就可以找到轉動後的情況。
2、手鍊可以翻轉,所以再儲存一下reverse的字串。
3、列舉方法,直接next_permutation,簡單粗暴。
#include #include #include #include using namespace std;
vectorv; //儲存已經找出的情況
int sum = 0;
int main()
} if( it != v.end() ) continue;
string str2 = str + str;
v.push_back(str2);
reverse(str2.begin(), str2.end()); //需要algorithm標頭檔案
v.push_back(str2);
sum ++;
}while(next_permutation(str.begin(), str.end()));
cout << sum ;
}
結果:運算時間有點長,3s後出結果,1170。
藍橋杯 水題練習 手鍊樣式
小明有3顆紅珊瑚,4顆白珊瑚,5顆黃瑪瑙。他想用它們串成一圈作為手鍊,送給女朋友。現在小明想知道 如果考慮手鍊可以隨意轉動或翻轉,一共可以有多少不同的組合樣式呢?答案為 1170 include using namespace std intmain if i v.size continue str...
藍橋杯 2015初賽 手鍊樣式
小明有3顆紅珊瑚,4顆白珊瑚,5顆黃瑪瑙。他想用它們串成一圈作為手鍊,送給女朋友。現在小明想知道 如果考慮手鍊可以隨意轉動或翻轉,一共有多少不同的組合樣式?請你輸出該整數。不要輸出任何多餘的內容或說明性的文字。12!3!4!5!12 2310種,這是不考慮可以翻轉的答案。若考慮翻轉需要求出那些左右對...
藍橋杯2015初賽 手鍊樣式
小明有3顆紅珊瑚,4顆白珊瑚,5顆黃瑪瑙。他想用它們串成一圈作為手鍊,送給女朋友。現在小明想知道 如果考慮手鍊可以隨意轉動或翻轉,一共有多少不同的組合樣式?輸出請你輸出該整數。不要輸出任何多餘的內容或說明性的文字 思路 1.將珠子抽象成字元,然後使用c 中的下乙個排列函式來求排列 2.由於手鍊可以任...