nyoj927 The partial sum problem(dfs)
来源:互联网 发布:web前端js框架 知乎 编辑:程序博客网 时间:2024/06/10 09:24
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!
题意:很简单,就是给你一个数组,和一个值k,是否能从数组中找到n个数之和等于k
思路:直接dfs,不过这个题好像时间有点限制,所以要一个简单的剪枝
Code:
//开始的思路不是很清晰,太盲目的做,因为初始化和回溯的问题wa了两次,然后改好之后又果断超时了,没有考虑剪枝和重复搜索的问题.//看了一下别人的代码瞬间开窍了,这么简单的题目还wa真是醉了#include <stdio.h>#include <string.h>int a[20],n,k,flage,vis[20];void dfs(int now,int sum){ int i; if(sum>=k) { if(sum==k) flage=1; return ; } else { for(i=now;i<n;i++) //这里从now开始就行了,之前的思路是把所有的情况全部考虑了中间会出现重复的情况 { if(vis[i]==0) { vis[i]=1; sum+=a[i]; dfs(i+1,sum); if(flage) //这里做了一个剪枝,如果已经可以找到,那么后面就不用找了 return; sum-=a[i]; vis[i]=0; } } }}int main(){ int sum,i; while(scanf("%d",&n)!=EOF) { flage=0; sum=0; memset(vis,0,sizeof(vis)); for(i=0;i<n;i++) scanf("%d",&a[i]); scanf("%d",&k); dfs(0,0); if(flage) printf("Of course,I can!\n"); else printf("Sorry,I can't!\n"); } return 0;}
0 0
- nyoj927 The partial sum problem(dfs)
- NYOJ927 The partial sum problem(深搜DFS)
- NYOJ927 The partial sum problem
- NYOJ927 The partial sum problem
- DFS-The partial sum problem
- Nyoj 927 The partial sum problem[dfs]
- 927 The partial sum problem【dfs】
- The partial sum problem(dfs)
- nyoj 927The partial sum problem (DFS)
- [DFS]NYOJ 927 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
- The partial sum problem
- iOS--UITableViewCell去除重影的方法
- Android显式调用第三方app
- spring整合消息队列rabbitmq
- ubuntu下使用Tesseract-ocr(编译、安装、使用、训练新的语言库)
- 实现linux上类似wc -l -w -c + 文本文件的函数
- nyoj927 The partial sum problem(dfs)
- mysql 事务处理用法和详解
- 如何向Genymotion虚拟机导入图片或者其他资料(一)
- 让玩家操作这个世界
- C++程序设计语言练习4.3
- 反转链表
- 设计模式
- 深入Java集合学习系列:ArrayList的实现原理
- 用dumpdecrypted给App砸壳