回溯法求解密碼問題,C 語言

2021-10-06 03:03:28 字數 1081 閱讀 7823

給定乙個整數n和乙個由不同大寫字母組成的字串str(長度大於5、小於12),每乙個字母在字母表中對應有乙個序數(a=1,b=2,…,z=26),從str中選擇5個字母構成密碼,例如選取的5個字母為v、w、x、y和z,他們要滿足v的序號-(w的序數)2+(x的序數)3-(y的序數)4+(z的序數)5=n。例如,給定的n=1、字串str為"abcdefghijkl",乙個可能的解是「fiecb」,因為6-92+53-34+25=1,但這樣的解可能有多個,最終結果是按字典序最大的那個,所以這裡的正確答案是「lkeba」.

每一行為n和str 輸入0結束

每一行對應相應密碼,沒有解就輸出no solution

1 abcdefghijkl

11700519 zayexiwovu

3072997 sought

1234567 thequickfrog

0lkeba

yoxuz

ghost

no solution

#include

#include

#include

#include

using

namespace std;

int array[13]

;int first =-1

;int aw[5]

;void

empty()

//清空函式

first =-1

;}void

solve

(int n ,string s1)

sort

(array, array + s1.

size()

);do}

}}}while

(next_permutation

(array, array + s1.

size()

));//全排列

if(first ==-1

)else

cout << endl;

empty()

;//清空,不影響下次結果。}}

intmain()

return0;

}

求解密碼問題C RJ503求解密碼問題

給定乙個整數n和乙個由不同大寫字母組成的字串str 長度大於5 小於12 每乙個字母在字母表中對應有乙個序數 a 1,b 2,z 26 從str中選擇5個字母構成密碼,例如選取的5個字母為v w x y和z,他們要滿足v的序號 w的序數 2 x的序數 3 y的序數 4 z的序數 5 n。例如,給定的...

C語言回溯法遞迴求解八皇后問題

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述 輸出8皇后問題所有結果。輸入 沒有輸入。輸出 每個結果第一行是no n 的形式,n表示輸出的是第幾個結果 下面8行,每行8個字元,a 表示皇后,表示空格。不同的結果中,先輸出第乙個皇后位置靠前的結果 第乙個皇后位置相同,先輸出...

回溯法 求解皇后問題

include include using namespace std static char queen 8 8 建立乙個棋盤 static int a 8 static int b 15 static int c 15 static int iqueennum 0 記錄總的棋盤狀態數 voidq...