考虑包含N位数字的K-进制数. 定义一个数有效, 如果其K-进制表示不包含两连续的0.
例: 1010230 是有效的7位数 1000198 无效 0001235 不是7位数, 而是4位数.
给定两个数N和K, 要求计算包含N位数字的有效K-进制数的总数.
假设2 <= K <= 10; 2 <= N; 4 <= N K <= 18.
思路:DFS
代码语言:javascript复制#include<bits/stdc .h>
using namespace std;
char s[10];
int res = 0;
int n,k;
void dfs(int ans){
if(ans == n) res ;
else for(int i=0;i<k;i ){
s[ans] = i '0';
if(s[0]=='0' || (s[ans]=='0' && s[ans-1]=='0') ) continue;
else dfs(ans 1);
}
}
int main(){
cin>>n>>k;
dfs(0);
cout<<res<<endl;
return 0;
}