解题思路:先用dfs将可行的排队顺序总数找出,然后再算出小朋友排队的总数
如样例
我们用dfs找出可行的排列顺序为(0为1元的小朋友,1为2元的小朋友)
0011
0101
两种排队顺序
然后将小朋友放入:
第一个1元小朋友有C12 种方法排队第二有C11
2元小朋友同理
最后答案为
可行的排队顺序(ans)乘上小朋友们的排队方法
ans*(1元小朋友们的方法)*(2元小朋友们的方法)
注意事项:
参考代码:
#include<bits/stdc++.h> using namespace std; int m,n,k; int ans=0; void dfs(int i,int j,int z) { if(i==m) { ans++; return; } if(j<n) { //cout<<i<<' '<<j<<' '<<z<<endl; dfs(i+1,j+1,z); } if(j>z&&z<k) { //cout<<i<<' '<<j<<' '<<z<<endl; dfs(i+1,j,z+1); } } int main() { cin>>m>>n>>k; dfs(0,0,0); for(int i=1;i<=n;i++) { ans*=i; } for(int i=1;i<=k;i++) { ans*=i; } cout<<ans; return 0; }
0.0分
0 人评分
简单的for循环浏览:1495 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:2121 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:569 |
字符串输入输出函数 (C语言代码)浏览:2604 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:654 |
C二级辅导-同因查找 (C语言代码)浏览:618 |
DNA (C语言代码)浏览:837 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:751 |
C语言程序设计教程(第三版)课后习题7.4 (C++代码)浏览:571 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:672 |