2011年蓝桥杯第九题
来源:互联网 发布:mssql查询分析器下载 编辑:程序博客网 时间:2024/05/17 23:18
这道题目的意思也很简单,核心就是枚举,对于m种商品,每种商品个数有0到 i 种可能,value*i<=now,其中value为商品的单价,now为总钱数1000 - 已经消费的钱数,也就是目前剩余的总钱数,用深搜枚举所有可能,下面是代码:
#include <stdio.h>#include <stdlib.h>#define Max 1000 //数据上限,最多有1000种商品int value[Max]; //记录每种商品的价格int record[Max]; //记录每种商品的个数int dif[Max][Max];//记录可能的所有商品个数组合int ans=0;//记录所有可能成立情况个数int n;void Dfs(int now,int pivot){ //now为当前还剩余的钱数,pivot为当前商品下标if(pivot==n){ if(now==0){for(int i=0;i<n;i++)dif[ans][i]=record[i];ans++;}return ;}int temp=now,i=0;while(i*value[pivot]<=now){//从商品数为0开始不断增加试探,枚举所有可能的取值record[pivot]=i;temp-=i*value[pivot];Dfs(temp,pivot+1);i++;temp=now;}}int main(){scanf("%d",&n);int i,j;for(i=0;i<n;i++)scanf("%d",&value[i]);Dfs(1000,0); //最开始还剩1000,没有花费任何钱,从商品标号为0开始printf("%d\n",ans);for(i=0;i<ans;i++){for(j=0;j<n;j++)printf("%d ",dif[i][j]);printf("\n");}return 0;}
注意当没有可能情况的时候输出应该为0
0 0
- 2011年蓝桥杯第九题
- 第九题
- 第九题
- 第九题
- 第九题
- 第九题
- 第九题
- 第九题
- project Euler第九题
- 第九章 二题
- 第九章第二题
- 第九章第三题
- C++第九题20150327
- P51 第九题
- P051第九题
- 51页第九题
- 第一章 第九题
- P51 第九题
- Git入门指南十:应用标签
- libsvm matlab 2013a for mac10.9 配置
- Android Notification通知详解
- java API chm html 1.5 1.6 中文版英文版
- Tomcat 7的WebSocket实现(上)
- 2011年蓝桥杯第九题
- CareerCup Binary Tree the Maximum of 人
- 1004. Counting Leaves (30) PAT+BFS
- ios ViewController 页面跳转
- android 使用LocationClient获取精度,纬度坐标
- MapReduce执行过程
- 安卓SDK环境配置
- 期末考试编程题
- struts2随笔(一)Action、struts.xml、Interceptor细节