题目描述
一间冰淇淋商店刚刚开张,外面有2×N个人购买1元的冰淇淋,其中一半人拿着1张2元人民币,另一半人拿一张1元人民币。售货员很粗心,没有准备零钱,要使出售过程中不发生找钱困难,问这2×N个人应该如何排队,请你帮他找出所有方案数量的总和。
输入输出格式
输入格式:
一行,一个整数N(N≤15)。
输出格式:
一行,一个整数,表示方案总数。
输入输出样例
输入样例:
4
输出样例:
14
这一题我A了贼久,希望各位别Ctrl+c再Ctrl+v谢谢
(以下代码仅供参考!!!!)
#include<iostream> #include<cstdio> using namespace std; int n,r; int box1,box2,box; int a[10000000],x,ans; int money,b[1000000]; int main() { scanf("%d",&x); n=2*x; r=x; int box1=n,box2=r; for(register int i=1;i<=r;++i) a[i]=i+1; while(a[0]==0) { n=box1,r=box2; a[box2]++; while(a[r]>n) { r--,n--; a[r]++; } for(register int j=r+1;j<=box2;++j) a[j]=a[j-1]+1; for(register int j=1;j<=x;++j) { money+=a[j]-a[j-1]-2; if(money<0) break; } if(money>=0) ans++; money=0; } printf("%d",ans); return 0; }