码迷,mamicode.com
首页 > 其他好文 > 详细

POJ2248 Addition Chains 迭代加深

时间:2019-04-26 09:29:39      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:name   clu   避免   etc   stream   class   utc   tin   fine   

不知蓝书的标程在说什么,,,,于是自己想了一下。。。发现自己的代码短的一批。。。


 

限制搜索深度+枚举时从大往小枚举,以更接近n+bool判重,避免重复搜索

#include<cstdio>
#include<iostream>
#include<cstring>
#define R register int
using namespace std;
inline int g() {
    R ret=0; register char ch; while(!isdigit(ch=getchar())); 
    do ret=ret*10+(ch^48); while(isdigit(ch=getchar())); return ret;
}
int n,dep=1;
int a[110];
bool v[110];
inline bool dfs(int crt) {
    if(crt==dep+1) return a[dep]==n;
    for(R i=crt-1;i>=1;--i) for(R j=i;j>=1;--j) {
        if(a[i]+a[j]>n) continue;
        if(a[i]+a[j]<=a[crt-1]) break;
        if(v[a[i]+a[j]]) continue;
        a[crt]=a[i]+a[j]; if(dfs(crt+1)) return true;
    } return false;
}
signed main() {
    while(n=g(),n!=0) { dep=1;
        memset(a,0,sizeof(a));memset(v,false,sizeof(v)); a[1]=1;
        while(!dfs(2)) ++dep;
        for(R i=1;i<=dep;++i) printf("%d ",a[i]); putchar(\n);
    }
}

2019.04.26

 

POJ2248 Addition Chains 迭代加深

标签:name   clu   避免   etc   stream   class   utc   tin   fine   

原文地址:https://www.cnblogs.com/Jackpei/p/10772315.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!