給出乙個整數n(n<=2000)和k個變換規則(k≤15)。規則:
① 1個數字可以變換成另1個數字;
② 規則中,右邊的數字不能為零。
例如:n=234,k=2規則為
2 → 5
3 → 6
上面的整數234經過變換後可能產生出的整數為(包括原數)234,534,264,564共4種不同的產生數。求經過任意
次的變換(0次或多次),能產生出多少個不同的整數。僅要求輸出不同整數個數。nk
x1 y1
x2 y2
… …xn yn
格式為乙個整數(滿足條件的整數個數)。
23422 5
3 6
4
這道題,我用的string存的數字,用map對映是否找到過,用vector記錄變化規則,用queue當dfs來查詢,最後記得特判最後一位0的情況。
1 #include2using
namespace
std;
3 vector v[1001
];4 mapsj;
5 queue q;
6int
k,ans;
7stringn;8
intmain()
917 ans++;//
本來自己就是一種方法
18 sj[n]=1;//
標記 19
q.push(n);
20while(!q.empty())
2137 s[i]=num+'
0';//
還原 38}39
}40}41 cout輸出 42
return0;
43 }
洛谷 P1037 產生數
description 給出乙個整數 n n 10 30 和 k 個變換規則 k 15 規則 一位數可變換成另乙個一位數 規則的右部不能為零。例如 n 234。有規則 k 2 2 5 3 6 上面的整數 234 經過變換後可能產生出的整數為 包括原數 234 534 264 564 共 4 種不同的...
洛谷P1037產生數
給出乙個整數n n 2000 和k個變換規則 k 15 規則 1個數字可以變換成另1個數字 規則中,右邊的數字不能為零。例如 n 234,k 2規則為 2 5 3 6 上面的整數234經過變換後可能產生出的整數為 包括原數 234,534,264,564共4種不同的產生數。求經過任意次的變換 0次或...
洛谷P1037 產生數
題目鏈結 本著 水題不可大做 的原則,我直接字串hash 爆搜,成功爆棧。我們發現,依次搜尋每一位能取到的數字個數,最後乘起來即可 乘法原理 然後又爆了乙個點。long long存不下!於是我面向資料程式設計,看到輸出的數後面有很多0 就產生了這個神奇的騙分做法 include include in...