带物旅游问题的解答.docVIP

  • 0
  • 0
  • 约2.12千字
  • 约 4页
  • 2018-02-24 发布于河南
  • 举报
带物旅游问题的解答

某人出游,带有n(0n100000)件物品,要求如下: 最多带一个汉堡 巧克力的块数是5的倍数 最多带4瓶矿泉水 薯片的包数是偶数 最多带三罐牛奶 糖果的个数是4的倍数。 问他总共有多少种带法? Sample Input 1 Sample Output 3 解题分析: 假设带的汉堡、矿泉水、牛奶的总件数为a件,带的巧克力、薯片、糖果的总件数是b件,则a+b=n。有条件可知a是有范围的,a可为0到8中取值,b的范围则随n变化。 a是一个小范围变化的数,如下所示: for(i=0;i2;i++) for(j=0;j5;j++) for(k=0;k4;k++) a[i+j+k]++; 可以用一个数组a[ ]来存储a在0到8中取值的所有情况。数组a[ ]的下标为a的值。 b是的组成则是一个拆数的问题,b=5x+4y+2z,x,y,z分别表示巧克力的块数,糖果的个数,薯片的包数。可知,如果b是偶数,则x必须是偶数,也就是说5是成双成对的出现。如果,b是奇数,则x必须为奇数,也就是说x+1是偶数,这样就可以确定x的值。剩下的部分由y,z组成,y少一件,z则加两件,也就是说x确定后,y的最大值加1就是y和z的所有的情况,如下所示: int spt(int N) { int count=0;//计数,count表示b=N时,x,y,z的所有组合情况 if(N==0) ret

文档评论(0)

1亿VIP精品文档

相关文档