| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4185 人关注过本帖, 1 人收藏
标题:初学Dfs算法,送出水题2道
只看楼主 加入收藏
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:28 
初学Dfs算法,送出水题2道
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[i],sum);



[此贴子已经被作者于2020-3-2 19:21编辑过]

搜索更多相关主题的帖子: 两组 给定 算法 输出 提示 
2020-03-02 19:17
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:7 
程序代码:
//我这人不会算法只能用最笨的方法第一题我把ij标出来方便我以后看

#include<iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{   int num[]= {6,8,4,2,3};
    int a{10};int count=0;
   // int c=0;
    //int j=0;
    for(int i=0; i<5&&num[i]; ++i)
    {   for( int j=1; j<5&&(j!=i); ++j)
        {  int c=num[i]+num[j];

            if(c==a)
            {

            ++count;cout<<i<<j<<endl;
            
            }

        }

    }
            if(count==0)
            cout << "meifax" ;

}

第二题一会儿写

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

2020-03-02 19:38
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==?????){
        if(?????==t)flg=?????;
        return;
    }
    dfs(i+1,?????);
    dfs(i+1,?????);
}
int main(){
    cin>>?????>>t;
    for(int i=?????;i<?????;i++){
        ?????
    }
    dfs(?????,?????);
    if(?????)cout<<"YES";
    else cout<<"NO"; 
    return 0;
}

2020-03-02 19:41
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
对啊6+4=8+2=10第二题没看懂

[此贴子已经被作者于2020-3-2 21:26编辑过]


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

2020-03-02 19:44
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
收藏
得分:0 
他貌似不让我输入耶

2020-03-02 19:45
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
程序代码:
#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);
}


把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-02 21:02
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
第二题给个正确的例子啊,我想的答案不一定和你题目中的一致

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

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



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

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