zoukankan      html  css  js  c++  java
  • 入门OJ 6247【算式等式】

    描述

      给你N个数字,每个数字均不相同,你可以取其中任意个数字相加,如果所得到的结果在给出的数列中也能找到,则输出这个等式

    输入输出格式

    输入

      第一行一个数字N
      接下来N个数字

    输出

      输出你找到的等式,注意看样例的输出格式 

    输入输出样例

    输入样例1

    6
    1 3 5 7 8 9

    输出样例1

    1+7=8
    1+8=9
    3+5=8
    1+3+5=9

    解题思路

      这道题首先想到的就是分支限界法(<--不知道的童鞋赶紧去看看)限制了深度后才让输出的数字数量从少到多。

    题解

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n,q;
     4 int num[101];
     5 set<int> s;//方便寻找 
     6 bool flag[10001];//标记 
     7 bool qwe=false;
     8 void dfs(int sum,int pre,int dep)//总值,开始搜索的下标,深度 
     9 {
    10     if(dep==q+1)//深度超出 
    11     {
    12         if(s.count(sum))//找得到 
    13         {
    14             qwe=true;//控制格式 
    15             for(int i=1;i<=n;i++)
    16             {
    17                 if(flag[i])//有这个数就输出 
    18                 {
    19                     if(!qwe)cout<<"+"<<num[i];
    20                     else
    21                     {
    22                         cout<<num[i];
    23                         qwe=false;
    24                     }
    25                 }
    26                   
    27             }
    28             cout<<"="<<sum<<endl;
    29         }
    30         return;//注意,这这里无论找不找得到都要退出返回 
    31     }
    32     for(int i=pre;i<=n;i++)
    33     {
    34         if(!flag[i])
    35         {
    36             flag[i]=true;
    37             dfs(sum+num[i],i+1,dep+1);
    38             flag[i]=false;//取消标记,回溯操作 
    39         }
    40     }
    41 }
    42 int main()
    43 {
    44    cin>>n;
    45    for(int i=1;i<=n;i++)
    46    {
    47         cin>>num[i];
    48         s.insert(num[i]);//存入set 
    49    }
    50    for( q=2;q<n;q++)//分支限界精髓重点,循环深度搜索,注意全局变量 
    51    {
    52         dfs(0,1,1);
    53    }
    54     return 0;
    55 }

     

  • 相关阅读:
    [Go] Slices vs Array
    [置顶] SpecDD系列:“完成” 的定义
    关于游戏开发的一点随笔
    提高效率 常用的几个xcode快捷键
    关于android 自己实现 back键 home键
    (组合数学3.1.1.1)POJ 1146 ID Codes(字典序法)
    [置顶] c# asp.net 修改webconfig文件 配置
    python数据类型和3个重要函数
    jdk环境变量配置
    VM虚拟机下在LINUX上安装ORACLE 11G单实例数据库
  • 原文地址:https://www.cnblogs.com/hualian/p/11152037.html
Copyright © 2011-2022 走看看