The partial sum problem
来源:互联网 发布:上海游族网络员工福利 编辑:程序博客网 时间:2024/04/28 17:14
The partial sum problem
时间限制:1000 ms | 内存限制:65535 KB
难度:2
- 描述
- One day,Tom’s girlfriend give him an array A which contains N integers and asked him:Can you choose some integers from the N integers and the sum of them is equal to K.
- 输入
- There are multiple test cases.
Each test case contains three lines.The first line is an integer N(1≤N≤20),represents the array contains N integers. The second line contains N integers,the ith integer represents A[i](-10^8≤A[i]≤10^8).The third line contains an integer K(-10^8≤K≤10^8). - 输出
- If Tom can choose some integers from the array and their them is K,printf ”Of course,I can!”; other printf ”Sorry,I can’t!”.
- 样例输入
41 2 4 71341 2 4 715
- 样例输出
Of course,I can!
Sorry,I can't!
一开始只想到超时的代码,一直不知道原来for循环里可以这么奇妙,看来是对dfs不够熟练。。。。
超时代码:
#include<iostream>#include<cstring>#include<cstdio>using namespace std;int bo[25];int a[25];int k,n,f;void dfs(int t){if(f||t>k) return; if(t==k)f=1; for(int i=0;i<n;++i){if(!bo[i]){bo[i]=1;dfs(t+a[i]);bo[i]=0;}}}int main(){while(~scanf("%d",&n)){f=0;memset(bo,0,sizeof(bo));for(int i=0;i<n;++i){scanf("%d",&a[i]);}scanf("%d",&k);dfs(0);if(f){printf("Of course,I can!\n");}else{printf("Sorry,I can't!\n");}}return 0;}
AC代码:#include<iostream>#include<cstring>#include<cstdio>using namespace std;int a[25];int k,n,f,t;void dfs(int x){if(t==k)f=1;if(f||(t>k&&t>0))return;for(int i=x;i<n;++i){t+=a[i];dfs(i+1);t-=a[i];}}int main(){while(~scanf("%d",&n)){f=0;t=0;for(int i=0;i<n;++i){scanf("%d",&a[i]);}scanf("%d",&k);dfs(0);if(f){printf("Of course,I can!\n");}else{printf("Sorry,I can't!\n");}}return 0;}
0 0
- The partial sum problem
- The partial sum problem
- The partial sum problem
- The partial sum problem
- The partial sum problem
- The partial sum problem
- The partial sum problem
- The partial sum problem
- NYOJ927 The partial sum problem
- NYOJ The partial sum problem
- DFS-The partial sum problem
- NYOJ927 The partial sum problem
- The partial sum problem 搜索
- NYOJ 927 The partial sum problem
- nyoj 927 The partial sum problem
- NYOJ-927 The partial sum problem
- Nyoj 927 The partial sum problem[dfs]
- NYOJ The partial sum problem 927
- Linux系统编程——线程同步与互斥:互斥锁
- spring cxf 开发webservice
- 初窥c++11:lambda函数及其用法
- 从输入url 到显示网页,后台做了什么
- springmvc 生成pdf,并下载
- The partial sum problem
- activemq与spring集成配置
- malloc和calloc的区别和联系
- LevelDB原理探究与代码分析(上)
- Android 反编译资料整理
- uvalive 4727 jump跳跃(dp/约瑟夫问题变形)
- xcode6 iOS sdk8.1隐藏系统状态栏
- Qt多线程
- Android最佳实践之响应灵敏性