zoukankan      html  css  js  c++  java
  • 和 (DFS)

    Time Limit: 1000MS Memory Limit: 65536KB
    Total Submissions: 177 Accepted: 93
    Share
    Description:
     
          现给定一个含有n个元素的数组A,要求:从这n个数中选择一些数,这些数的和恰好为k
     
    Input:
     
    多组测试数据。第一行为n(1<=n<=20) 第二行为n个整数,每个数的范围为(-10^8≤A[i]≤10^8) 第三行为整数k(-10^8≤k≤10^8).
     
    Output:
     
    如果能够达到目的,输出”Of course,I can!”; 否则输出”Sorry,I can’t!”.
     
    Sample Input:
     
    4 1 2 4 7 13 4 1 2 4 7 15
     

    Sample Output:
     
    Of course,I can! Sorry,I can't!
     
     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio> 
     4 using namespace std;
     5 int a[25];
     6 int vis[250];
     7 int n,m,flag;
     8 void dfs(int i,int sum)
     9 {
    10     if(i<n&&!vis[i]){
    11         vis[i]=1;
    12         if(sum+a[i]==m){
    13             flag=1;
    14         }else if(sum+a[i]<m){
    15             dfs(i+1,sum+a[i]);
    16             dfs(i+1,sum);
    17         }else{
    18             dfs(i+1,sum);
    19         }
    20         vis[i]=0;
    21     }
    22 }
    23 int main() {
    24     while(cin>>n){
    25         for(int i=0;i<n;i++) cin>>a[i];
    26         cin>>m;
    27         flag=0;
    28         dfs(0,0);
    29         if(flag) cout<<"Of course,I can!"<<endl;
    30         else cout<<"Sorry,I can't!"<<endl;
    31     }
    32     return 0;
    33 }
  • 相关阅读:
    C# Task ContinueWith的实现
    C# Task 是什么?返回值如何实现? Wait如何实现
    C# ExecutionContext 实现
    C# Barrier 实现
    C# CountdownEvent实现
    C# SemaphoreSlim 实现
    C# ManualResetEventSlim 实现
    C# Monitor实现
    C# SpinLock实现
    C# SpinWait 实现
  • 原文地址:https://www.cnblogs.com/wydxry/p/10561454.html
Copyright © 2011-2022 走看看