| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4251 人关注过本帖, 1 人收藏
标题:初学Dfs算法,送出水题2道
只看楼主 加入收藏
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
收藏
得分:0 
Input
4
2 3 4 9
Output
YES

2020-03-03 08:25
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
收藏
得分:0 
程序代码:
#include<bits/stdc++.h>
using namespace std;
int n,a[10010];
bool flg=false;
void dfs(int i,int t1,int t2){
    if(i==n){
        if(?????)flg=true;
        return;
    }
    dfs(?????);
    dfs(?????);
} 
int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[?????];
    }
    dfs(?????);
    if(?????)cout<<"YES";
    else cout<<"NO"; 
    return 0;
}

2020-03-03 08:26
小雪12
Rank: 1
等 级:新手上路
帖 子:4
专家分:7
注 册:2020-3-3
收藏
得分:7 
[quote]以下是引用return_0在2020-3-2 19:17:53的发言:

1.子集的和
给定n个正整数,请从中找出一些子集组合,使得子集和恰好等于一个给定的目标t。
如果找到满足的条件了,输出“YES”,否则输出“NO”
如给出:3 5 4 7 6,目标t为10,
因为3+7、4+6满足条件,所以输出“YES”(提示请select后面一行字)
提示: 这题没有提示!!!因为它简单到我给不出提示!!!
2.平分子集 1
给定n个正整数,请将它们分成两组,要求这两组数字的和完全相等,(不要求两组数字的数量相等),如果可行,则输出"YES",否则输出"NO"。
如给出:3 5 4 7 6
因为没有满足条件的项,所以输出“NO”(提示请select后面一行字)
提示: dfs(i+1,sum1+a,sum);

[373617
2020-03-03 11:00
小雪12
Rank: 1
等 级:新手上路
帖 子:4
专家分:7
注 册:2020-3-3
收藏
得分:0 
请问怎么操作我是小白‘
2020-03-03 11:01
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
程序代码:
//我不会算法只能用最笨的方法
//第二题
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
bool arry(int a[],short x,short y,short z)
{   short n1=y-x+1;
    short n2=z-y;
    int l[n1+1];int r[n2+1];
    int sum=0;int sum2=0;
    for(int i=0;i<n1;++i)
    { l[i]=a[i];
        sum+=l[i];}

 // cout<<sum;      
    for(int j=1;j<n2;++j)
    {r[j]=a[y+j];
        sum2+=r[j];}  
  // cout<<sum2;
    return sum==sum2;}
int main()
{    int a[164356]={};int dexs=0
;     while((std::cin.peek()!=EOF)&&(std::cin.peek()!='\n'))
{     cin>>a[dexs];
      ++dexs;
    }
    cout<<std::boolalpha;
       cout<< arry(a,0,dexs/2,dexs);
}



3 5 1 9
true
程序代码:
第一题
#include<iostream>

using std::cout;
using std::cin;
using std::endl;
bool arry(int num[],int dest,int a)
{    int count=0;


 for(int i=0; i<dest&&num[i]; ++i)
    {   for( int j=1; j<dest&&(j!=i); ++j)
        {  int c=num[i]+num[j];

            if(c==a)
            {

            ++count;
            
            }

        }

    }
            return count!=0;      
    }
int main()

{ int dest=0;
  int num[10010]= {};
    int a={};
    cout<<"输入目标t"<<endl; 
    cin>>a;
    int count=0;
    cout<<"输入数组"<<endl; 
    std::cin.ignore(32767,'\n');
    while((cin.peek()!=EOF)&&(cin.peek()!='\n'))
    {cin>>num[dest];
    ++dest;}
    cout<<std::boolalpha;


 cout<< arry(num,dest,a);
}





输入目标t
10                                         输入数组                                   1 5 8 9 2                                  true


[此贴子已经被作者于2020-3-3 15:08编辑过]


把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-03 15:05
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
收藏
得分:0 
。。。

2020-03-04 18:57
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
回复 16楼 return_0
咋滴啦,你看看我的代码对头不?给我品品呀,要不你把你的代码发出来,我品品你的代码也行呀

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-04 19:16
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
收藏
得分:0 
我贴完整代码:

2020-03-04 19:27
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
收藏
得分:0 
程序代码:
#include<bits/stdc++.h>
using namespace std;
int n,t,a[10010];
bool flg=false;
void dfs(int i,int sum){
    if(i==n){
        if(sum==t)flg=true;
        return;
    }
    dfs(i+1,sum+a[i]);
    dfs(i+1,sum);
}
int main(){
    cin>>n>>t;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    dfs(0,0);
    if(flg)cout<<"YES";
    else cout<<"NO"; 
    return 0;
}

2020-03-04 19:27
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
收藏
得分:0 
其实这种dfs(深度优先搜索)比跟枚举差不多快,但是写起来简单

2020-03-04 19:29
快速回复:初学Dfs算法,送出水题2道
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019747 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved