Question:http://poj.org/problem?id=1010
问题点:DFS、剪枝。
 Memory: 220K        Time: 32MS
Language: C++ Result: Accepted #include <iostream>
using namespace std; #define MAX_STAMP_TYPE 100
int stamp[MAX_STAMP_TYPE];
bool tie,none;
int now[],ans[];//记录stamp的index
int max_stamp;//记录最大邮票
int getInfo(int sta[]){
int tmp_a,tmp_b,tmp_c;
tmp_a=;
tmp_b=;
tmp_c=sta[];
for(int i=;i< && sta[i]>;i++)
{
if(sta[i-]!=sta[i]) tmp_a++;//取种类数 千位
tmp_b++;//取总张数 百位
tmp_c=sta[i-]>sta[i]?sta[i-]:sta[i];//取最大值 十位和个位
}
return tmp_a*+(-tmp_b)*+tmp_c;
}
void compare(){
none=false;//只要有结果,none就置为false
int nowInfo=getInfo(now);
int ansInfo=getInfo(ans);
char r=nowInfo>ansInfo?'g':(nowInfo<ansInfo?'l':'e');//g:出现更优解 l:不如现有解 e:tie
if(r=='g'){//如果出现更优解,将now中的数据复制到ans中保存
memcpy(ans,now,sizeof(now));
tie=false;
}else if(r=='e'){
tie=true;
}
return;
}
void dfs(int num,int cnt){
if(num==){//剩余数为0,即为解的出现条件
compare();
return;
}else if(cnt>=){//邮票数不能大于4张
return;
}else if(num<){//剩余需分配数不能小于0
return;
}else if(num>max_stamp*(-cnt)){
return;
}
for(int i=(cnt>?now[cnt-]:);i<=stamp[];i++)
{
now[cnt]=i;
dfs(num-stamp[i],cnt+);
now[cnt]=;
}
}
int main()
{
do{
int tmp,i=;
max_stamp=;
memset(stamp,,sizeof(stamp));
while(cin>>tmp && tmp!=){
stamp[i++]=tmp;
max_stamp=max_stamp>tmp?max_stamp:tmp;
}
stamp[]=i-;//记录邮票种类数
while(cin>>tmp && tmp!=){
tie=false;
none=true;
memset(now,,sizeof(now));
memset(ans,,sizeof(ans));
dfs(tmp,);
if(tie){
cout<<tmp<<" ("<<getInfo(ans)/<<"): "<<"tie"<<endl;
}else if(none){
cout<<tmp<<" ---- none"<<endl;
}else{
cout<<tmp<<" ("<<getInfo(ans)/<<"):";
for(int i=;i< && ans[i]>;i++){
cout<<" "<<stamp[ans[i]];
}
cout<<endl;
}
}
}while(getchar()!=EOF);
return ;
}

最新文章

  1. FindBugs使用
  2. Docker上运行dotnet core
  3. ActionScript语言函数重载
  4. pip 安装psycopg的错误
  5. django通过middleware计算每个页面的详细执行时间
  6. Spring 框架 详解 (二)
  7. NYOJ 93 汉诺塔(三)
  8. Javascript之高效编程
  9. 获取元素高度及定位js
  10. 开源项目:FFmpeg
  11. 在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配
  12. eclipse的使用
  13. android Button 颜色的变化(点击,放开,点击不放)
  14. Paas
  15. LFM 隐语义模型
  16. 将 Excel 数据导入 MySql
  17. php 汉字转拼音 [包含20902个基本汉字+5059生僻字]
  18. MobileNets总结
  19. DVA框架统一处理所有页面的loading状态
  20. 关于Java变量的可见性问题

热门文章

  1. HDU 5590 ZYB&#39;s Biology 水题
  2. opencv china 网站,好1376472449
  3. UVA 1484 - Alice and Bob&amp;#39;s Trip(树形DP)
  4. j简单的递归
  5. IO端口和IO内存的区别 转
  6. c#如何在win7下设置IE代理的完美解决方案
  7. Thrift安装问题
  8. js(jQuery)获取时间的方法及常用时间类搜集
  9. Face The Right Way 一道不错的尺取法和标记法题目。 poj 3276
  10. python--面向对象编程介绍