码迷,mamicode.com
首页 > 其他好文 > 详细

部分和问题

时间:2019-12-30 21:22:55      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:end   一点   一个   false   main   space   简单   std   部分和问题   

妈的能学会是一会,等会一定要思考一下怎么增加和解决这个方面的问题。

一,问题描述,

给定整数a1,a2,a3,a4,判断是否可以从中挑选出若干数,使它们的和恰好为k;

二,分析

1,作为一个最简单的选数类型题目。还是挺能看出来你垃圾的。我一定要费曼。

2,dfs里面还是挺体现挺多东西的。

3,我先把状态再细分一下,sum是总和,depth算是深度其实也就是选到第几个数。

不行你这样算啥状态呢?一点都不严谨!应该是sum是当前总和,depth是当前选到第几个数。

比如你从dfs(0,0)开始就是当前总和为0,当前选到第0个数。

4.明白道理,自己独立写一遍,再来费曼是一个道理的东西。

(对了话要拷贝一个)

5,额你这错的挺离谱的,不过错的话应该是对状态的理解上错了。

这个课本让我有点疑惑。。。

也不怪人家,人家估计都是从0开始的

所以要注意了。

6,代码

 1 #include<iostream>
 2 using namespace std;
 3 int n,k,a[10005];
 4 int dfs(int sum,int depth)
 5 {
 6     if(depth==n) return sum==k;
 7     
 8     if(dfs(sum,depth+1)) return true;
 9     if(dfs(sum+a[depth],depth+1)) return true;
10     
11     return false;
12 }
13 int main(){
14     cin>>n>>k;
15     for(int i=0;i<n;i++)
16         cin>>a[i];
17      if(dfs(0,0)) cout<<"Yes"<<endl;
18      else cout<<"No"<<endl; 
19     
20 }

7,mark

8,费曼。要给别人讲懂才算。

这费曼也不是简单的费曼啊

部分和问题

标签:end   一点   一个   false   main   space   简单   std   部分和问题   

原文地址:https://www.cnblogs.com/beiyueya/p/12121476.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!