本文共 1571 字,大约阅读时间需要 5 分钟。
#include#include using namespace std;char a[] = "aaaaabbbbbbbbbb";int main() { int ans = 0; do{ int jiu = 2; if(a[14] != 'b') continue; for(int i = 0; i < 15; ++i){ if(a[i] == 'a') jiu *= 2; if(a[i] == 'b') jiu -= 1; } if(!jiu) ++ans; }while(next_permutation(a,a+15));//这里有可以直接列举到 第14个 因为最后一定是花 printf("%d",ans) ; return 0; }
#includeint ans;char a[20];void dfs(int dian,int hua,int jiu,int s) {// if(dian < 0 || hua < 0 || jiu < 0)// return ; if(!dian && !hua && !jiu && a[14] == 'b')//这里 注意 最后一定是花 ++ans; if(dian > 0){ a[s] = 'a'; dfs(dian-1,hua,jiu*2,s+1); } if(hua > 0){ a[s] = 'b'; dfs(dian,hua-1,jiu-1,s+1); } }int main() { int jiu = 2; ans = 0; dfs(5,10,2,0); printf("%d\n",ans); return 0; }
#includeint a[20];int ans;void dfs(int pos, int sum, int type) { if(sum < 0) return ; a[pos] = type; if(pos == 15){ if(type != 1) return ; if(sum == 0){ int dian = 0; int hua = 0; for(int i = 1; i <= 15; ++i){ if(a[i] == 0) ++dian; else if(a[i] == 1) ++hua; } if(dian == 5 && hua == 10) ++ans; } return ; } dfs(pos+1,sum-1,1); dfs(pos+1,2*sum,0); }int main() { for(int i = 0; i < 20; ++i) a[i] = -1; ans = 0; dfs(0,2,0);//这是 第0次 type可以 取0或1 不影响结果 //dfs(0,2,1);//不可以 再次尝试 type = 1 否则结果翻倍 printf("%d\n",ans); return 0; }
转载地址:http://vqimi.baihongyu.com/