摘要: 第一次,裸奔了下,果断TLE..第二次,加了个剪枝,第一行的数不需要移动,移了也是重复的,这是我把3*3那个例子写了下发现的,没证明..300+ms第三次,也许加到前面某一行时,max就大于了min,就不需要继续搜到n行去了..63msView Code #include <stdio.h>int ar[8][8],sum[8],min,n;int judge(){ int i,max=0; for (i=0;i<n;i++) if(max<sum[i])max=sum[i]; if(max>min)return 0; return 1;}void dfs... 阅读全文
posted @ 2011-10-25 23:28 104_gogo 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 水~但是很阴险。View Code #include <stdio.h>int n,m,vis[15];int ar[]={1,1,2,6,24,120,720,5040,40320,362880};int dfs(int i,int data){ int j; if(data>n)return 0; if(data==n)return 1; for (j=i;j<=9;j++) { if(!vis[j]) { vis[j]=1; if(dfs(j+1,data+ar[j]))return 1... 阅读全文
posted @ 2011-10-25 14:40 104_gogo 阅读(196) 评论(0) 推荐(0) 编辑