UVA1374PowerCalculus

来源:互联网 发布:淘宝花溪都是什么牌子 编辑:程序博客网 时间:2024/06/11 03:32
//UVA1374PowerCalculus#include<cstdio>#include<cstdlib>#include<cstring>#include<map>#include<vector>#include<set>using namespace std;const int MAXN = 1000 + 10;int a[MAXN];int maxd;int expon = 1;int n;bool dfs(int d) {    if(a[d] == n) return true;if(d == maxd) return false;int midx = 0;for(int i = 0; i <= d; i++) midx = max(a[i], midx);if(midx << (maxd - d) < n) return false; //剪枝 for(int i = d; i >= 0; i--) {//穷举a[d + 1] = a[d] + a[i];//试加法  if(dfs(d + 1)) return true; }for(int i = d; i >= 0; i--) {//试减法 a[d + 1] = a[d] - a[i];if(dfs(d + 1)) return true;}return false; }int main() {    n = 0;    //freopen("UVA1374out.txt", "w", stdout);while(scanf("%d", &n) == 1 && n) {memset(a, 0, sizeof(a));expon = 1;if(n == 1) {printf("0\n"); continue;}a[0] = 1;for(maxd = 1; ; maxd++) {if(dfs(0)) {printf("%d\n", maxd); break;}}}return 0;}/*13170914735128119530*/

原创粉丝点击