nyoj--1058--部分和问题(dfs)
2015-11-15 22:02
531 查看
部分和问题
时间限制:1000 ms | 内存限制:65535 KB难度:2
描述 给定整数a1、a2、.......an,判断是否可以从中选出若干数,使它们的和恰好为K。
输入首先,n和k,n表示数的个数,k表示数的和。
接着一行n个数。
(1<=n<=20,保证不超int范围)输出如果和恰好可以为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成,否则“NO”样例输入
4 13 1 2 4 7
样例输出
YES 2 4 7
来源经典题目上传者
TC_杨闯亮
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define MAX 10000 int num[MAX],dp[MAX]; int main() { int n; while(scanf("%d",&n)&&n!=-1) { for(int i=0;i<n;i++) { scanf("%d",&num[i]); dp[i]=1; } for(int i=1;i<n;i++) { for(int j=0;j<i;j++) { if(num[i]>num[j]&&dp[j]+1>dp[i]) //dpÊý×é¼Ç¼µ±Ç°µÄjÊôÓÚÄÄÒ»¸öµÝ¼õÊýÁУ¬×îºóÕÒ×î´óÖµ { dp[i]=dp[j]+1; } } } int maxx=0; for(int i=0;i<n;i++) { if(maxx<dp[i]) maxx=dp[i]; } printf("%d\n",maxx); } return 0; }
相关文章推荐
- CentOS7配置Ngnix+PHP
- 九度oj-Zero-complexity Transposition
- Qt学习第三天
- 练习--python中的Queue与多进程(multiprocessing)
- mysql热备及查询mysql操作日志
- [1040]:As Easy As A+B(将输入的数排序)
- Win7下完全卸载Oracle 11g的步骤
- 游戏区域系统设计
- Dex动态加载的C语言部分
- div与span的区别:
- 益西拉姆 20135239 +银雪纯 20125221 +马悦 20135235 实验1 实验报告
- Java中类与类、类与接口、接口与接口的关系
- HDOJ 5500 Reorder the Books(规律)
- JS知识点
- xcodebuild和xcrun的打包
- Asp.Net跨平台
- 感知机
- Python核心编程读笔 13:执行环境
- 20135306黄韧 ——第十章续
- 10 2048