zoukankan      html  css  js  c++  java
  • NYOJ之题目1058部分和问题

    ----------------------------------------

    简单搜索+剪枝

    因为考虑到可能会有多个解,所以是将中间过程保存最后才一起打印出来的

    AC代码:

      1: 
    
      2: import java.util.ArrayList;
    
      3: import java.util.List;
    
      4: import java.util.Scanner;
    
      5: 
    
      6: public class Main {
    
      7: 
    
      8: 	public static void main(String[] args) {
    
      9: 		
    
     10: 		Scanner sc=new Scanner(System.in);
    
     11: 		
    
     12: 		while(sc.hasNextInt()){
    
     13: 			
    
     14: 			int n=sc.nextInt();
    
     15: 			int k=sc.nextInt();
    
     16: 			
    
     17: 			int x[]=new int[n];
    
     18: 			for(int i=0;i<x.length;i++) x[i]=sc.nextInt();
    
     19: 			
    
     20: 			ans=new StringBuilder();
    
     21: 			dfs(x,0,k,new ArrayList<Integer>());
    
     22: 
    
     23: 			System.out.println(ans.length()==0?"NO":ans);
    
     24: 		}
    
     25: 		
    
     26: 	}
    
     27: 	
    
     28: 	private static StringBuilder ans;
    
     29: 	
    
     30: 	public static void dfs(int x[],int i,int k,List<Integer> trackStack){
    
     31: 		if(k==0){
    
     32: 			if(ans.length()==0) ans.append("YES
    ");
    
     33: 			for(int j=0;j<trackStack.size();j++) ans.append(trackStack.get(j)).append(" ");
    
     34: 			ans.append("
    ");
    
     35: 			return;
    
     36: 		} else if(i==x.length || k<0) return;
    
     37: 		
    
     38: 		trackStack.add(x[i]);
    
     39: 		dfs(x,i+1,k-x[i],trackStack);
    
     40: 		trackStack.remove(trackStack.size()-1);
    
     41: 		
    
     42: 		dfs(x,i+1,k,trackStack);
    
     43: 	}
    
     44: 	
    
     45: }

    题目来源: http://acm.nyist.net/JudgeOnline/problem.php?pid=1058

  • 相关阅读:
    [ZZ]风险驱动的测试
    移动测试书籍推荐
    4月收藏
    Appium路线图及1.0正式版发布
    匿名吐槽和测试小道消息
    文章收藏
    [ZZ]最小化不可重现的bug
    华人世界——客家足迹行
    移动测试会第七期
    2月收藏
  • 原文地址:https://www.cnblogs.com/cc11001100/p/6024065.html
Copyright © 2011-2022 走看看