解题思路:
题目不满足条件只有第一位不能为零,和连续两个零,故条件并不复杂,直接dfs
参考代码:
#include<iostream> using namespace std; int N, K; int ans = 0; void dfs(int x, int cnt) { if (cnt == N) { ans++; return; } for (int i = 0; i < K; ++i) { if (x == 0 && i == 0)//连续两次零,直接忽略 continue; else dfs(i, cnt + 1); } } int main() { scanf("%d %d", &N, &K); for (int i = 1; i < K; ++i) { dfs(i, 1);//首位不为零 } cout << ans; return 0; }
0.0分
8 人评分
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:700 |
【密码】 (C语言代码)浏览:333 |
分糖果 (C++代码)浏览:1447 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:377 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:613 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:658 |
【金明的预算方案】 (C++代码)浏览:843 |
C语言程序设计教程(第三版)课后习题6.6 (C++代码)浏览:633 |
数对 (C语言代码)浏览:702 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:803 |