问题 1117: K-进制数

时间:2022-07-24
本文章向大家介绍问题 1117: K-进制数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

考虑包含N位数字的K-进制数. 定义一个数有效, 如果其K-进制表示不包含两连续的0.

例: 1010230 是有效的7位数 1000198 无效 0001235 不是7位数, 而是4位数.

给定两个数N和K, 要求计算包含N位数字的有效K-进制数的总数.

假设2 <= K <= 10; 2 <= N; 4 <= N+K <= 18.

思路:DFS

#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;
}