UVa1374 Power Calculus(IDA*)

Posted noblex

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa1374 Power Calculus(IDA*)相关的知识,希望对你有一定的参考价值。

题目

题目
?


?

分析

IDA*大法好,抄了lrj代码。
?


?

代码

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int maxans=14;

int n,a[maxans+1];

bool dfs(int d,int maxd)
{
    if(a[d] == n) return true;
    if(d == maxd) return false;
    
    int maxv=a[0];
    for(int i=1; i<=d; i++) maxv=max(maxv, a[i]);
    if( (maxv << (maxd-d)) < n) return false;
    
    for(int i=d; i>=0; i--)
    {
        a[d+1]=a[d]+a[i];
        if(dfs(d+1 , maxd)) return true;
        a[d+1] = a[d] - a[i];
        if(dfs(d+1 , maxd)) return true;
    }
    return false;
}

int solve(int n)
{
    if(n==1) return 0;
    a[0]=1;
    for(int maxd=1; maxd < maxans; maxd++)
        if(dfs(0,maxd)) return maxd;
    return maxans;
}

int main()
{
    while( scanf("%d",&n)==1 && n!=0)
        printf("%d\n",solve(n));
    return 0;
}

以上是关于UVa1374 Power Calculus(IDA*)的主要内容,如果未能解决你的问题,请参考以下文章

UVA 1374 Power Calculus

UVa1374 Power Calculus(IDA*)

Power Calculus UVA - 1374 迭代加深搜索

UVa1374 Power Calculus (IDA*)

UVa 1374 - Power Calculus——[迭代加深搜索快速幂]

迭代加深搜索(以Power Calculus POJ--3134 UVa--1374为例)