本题目的dfs原理不难,个人认为难点式路径的记录,刚开始定义了很大的数组,提交的时候超出了内存的限制,后来在网上发现有的人用了栈存储,纠结了半天终于搞出来啦。
#include#include int flag;int st[7];int head;int in[6];int digit;int digit2;int num1,max;int de;void dfs(int cur,int sum){ if(cur>=digit2) { if(sum>max) { max=sum; flag=1; head=0; st[head++]=cur; de=cur; } else if(sum==max) flag=2; return; } int i,j; for(i=1;i<=digit2;i++)//当前区间包含的位数 { if((cur+i)>digit2) break; int asum=0; for(j=0;j num1) return; dfs(cur+i,sum+asum); if(cur =0;i--) { printf(" "); for(j=st[i+1];j