首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

poj2248 Addition Chains-dfs

2012-09-10 
poj2248Addition Chains--------dfs#includeiostream#includecstdlib#includestdio.h#includememor

poj2248 Addition Chains--------dfs
#include<iostream>#include<cstdlib>#include<stdio.h>#include<memory.h>using namespace std;int n,MIN;int a[10005];int temp[10005];void dfs(int pos){ if(pos>=MIN) return ; for(int i=0;i<pos;i++) { int t=temp[i]+temp[pos-1]; if(t==n) { if(pos<MIN) { MIN=pos; for(int j=0;j<pos;j++) a[j]=temp[j]; } return ; } if(t<n) { temp[pos]=t; dfs(pos+1); temp[pos]=0; } }}int main(){ while(scanf("%d",&n),n) { if(n==1) {puts("1");continue;} memset(temp,0,sizeof(temp)); memset(a,0,sizeof(a)); a[0]=1; temp[0]=1; MIN=99999; dfs(1); for(int i=0;i<MIN;i++) { if(i==0) printf("%d",a[i]); else printf(" %d",a[i]); } printf(" %d",n); puts(""); }}

热点排行