博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1118 [USACO06FEB]数字三角形 搜索
阅读量:7090 次
发布时间:2019-06-28

本文共 1140 字,大约阅读时间需要 3 分钟。

洛谷P1118 [USACO06FEB]数字三角形Backward Digit Su…     搜索

这题我们发现每一个位置的加权就是 杨辉三角 yh[ n ][ i ]

然后我们就可以求 n! 暴力 ,但是会 TLE 额 好像是会T 因为12! 已经 4亿了
然后我们加一个强力剪枝 如果当前求出来的 s 已经大于 sum了,因为没有负的加
权,也就是说这一路是没有用了的,在继续搜下去也不能更新答案了,那么就直接退出 。

 

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 using namespace std ;10 11 int n,sum ;12 int ans[13],yh[13][13] ;13 bool finished ;14 bool used[13] ;15 16 inline void dfs(int p,int s)17 {18 if(p>n) 19 {20 if(s==sum) 21 {22 finished = 1 ;23 for(int i=1;i<=n;i++) printf("%d ",ans[ i ]) ;24 exit(0) ;25 }26 return ;27 }28 for(int i=1;i<=n;i++) 29 {30 if(!used[ i ]) 31 {32 if(s+yh[n][p]*i>sum) continue ; //剪枝 即不能更新答案了 33 ans[ p ] = i ; 34 used[ i ] = 1 ;35 dfs(p+1,s+yh[n][p]*i) ;36 used[ i ] = 0 ;37 }38 } 39 }40 41 int main() 42 {43 scanf("%d%d",&n,&sum) ;44 yh[1][1] = 1 ;45 for(int i=2;i<=n;i++) 46 for(int j=1;j<=i;j++) 47 yh[ i ][ j ] = yh[ i-1 ][ j-1 ]+yh[ i-1 ][ j ] ;48 49 dfs(1,0) ;50 51 return 0 ;52 }

 

转载于:https://www.cnblogs.com/third2333/p/6859691.html

你可能感兴趣的文章
【分享】开源富文本编辑器之间的较量
查看>>
logback的使用和logback.xml详解
查看>>
Android Studio -- 关联源码
查看>>
leetcode Majority Element
查看>>
去除sql的前后半角全角空格
查看>>
图片在容器里水平垂直居中
查看>>
015PHP文件处理——文件处理flock 文件锁定 pathinfo realpath tmpfile tempname
查看>>
关系型数据库之MySQL
查看>>
算法笔记-二叉树
查看>>
编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,并输出计算结果总是100的所有可能性。...
查看>>
Java异常处理课后作业
查看>>
hrtf 旋转音效matlab实现
查看>>
__attribute__
查看>>
【Android每日一讲】2012.11.06 Android变脸 - 主题(Theme)实现
查看>>
redis 系列12 哈希对象
查看>>
QTP使用心得
查看>>
js/jq ajax+数组。个人整理
查看>>
mac 下批量转换文件类型
查看>>
何为DOM对象
查看>>
linux的yum仓库配置
查看>>