NYOJ-927 The partial sum problem

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!”.
样例输入
4
1 2 4 7
13
4
1 2 4 7
15
样例输出
Of course,I can!
Sorry,I can‘t!

直接dfs用时长,可以剪枝

剪枝代码:用时12ms

01.#include<iostream>

02.using namespace std;

03.int n,k,a[25];

04.bool dfs(int p,int sum)

05.{

06.if(sum==k)return 1;

07.if(p==n||sum>k)return 0;

08.if(dfs(p+1,sum))return true;

09.else return dfs(p+1,sum+a[p]); 

10.}

11.int main()

12.{

13.while(cin>>n)

14.{

15.for(int i=0;i<n;i++)

16.cin>>a[i];

17.cin>>k;

18.if(dfs(0,0))

19.cout<<"Of
course,I can!"
<<endl;

20.else

21.cout<<"Sorry,I
can‘t!"
<<endl;

22.}

23.return 0;

24.}

普通dfs:用时860ms

01.#include<iostream>

02.using namespace std;

03.int n,k,a[25];

04.bool dfs(int p,int sum)

05.{

06.if(p==n)return sum==k;

07.if(dfs(p+1,sum))return true;

08.if(dfs(p+1,sum+a[p]))return true;

09.return false;  

10.}

11.int main()

12.{

13.while(cin>>n)

14.{

15.for(int i=0;i<n;i++)

16.cin>>a[i];

17.cin>>k;

18.if(dfs(0,0))

19.cout<<"Of
course,I can!"
<<endl;

20.else

21.cout<<"Sorry,I
can‘t!"
<<endl;

22.}

23.return 0;

24.}

时间: 2024-08-18 16:53:57

NYOJ-927 The partial sum problem的相关文章

NYOJ 927 The partial sum problem 【DFS】+【剪枝】

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 mul

nyoj 927 The partial sum problem(dfs)

描述 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 firs

nyoj927 The partial sum problem(dfs)

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 multi

NYoj The partial sum problem(简单深搜+优化)

题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=927 代码: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <math.h> 5 #include <algorithm> 6 #include <iostream> 7 using namespace std; 8

Maxmum subsequence sum problem

We have a lot of ways to solve the maximum subsequence sum problem, but different ways take different time. 1.Brute-force algorithm int maxSubSum1(const vector<int> &a) { int maxSum=0; for(int i=0;i<a.size();i++) for(int j=i;j<a.size();j++

hdu 2576 Another Sum Problem

题目大意:求前n项和的前n项和. 数学推导题,f(n)=n*(n+1)*(n+2)/6 推导思路如下: #include"cstdio" #include"cstring" #include"cmath" #include"cstdlib" #include"iostream" #include"algorithm" #include"queue" using nam

Partial Sum

Partial Sum Accepted : 80   Submit : 353 Time Limit : 3000 MS   Memory Limit : 65536 KB  Partial Sum Bobo has a integer sequence a1,a2,…,an of length n . Each time, he selects two ends 0≤l<r≤n and add |∑rj=l+1aj|−C into a counter which is zero initia

hdu2058 The sum problem(枚举~~等差数列求和公式)

The sum problem Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 17697    Accepted Submission(s): 5275 Problem Description Given a sequence 1,2,3,......N, your job is to calculate all the possibl

The sum problem

The sum problem Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16197 Accepted Submission(s): 4843 Problem Description Given a sequence 1,2,3,......N, your job is to calculate all the possible sub