7-12找零钱***

it2022-05-05  145

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.StringTokenizer; public class S7_12 { static int[] rec = new int[1005]; static int n, m; static boolean ok; public static void main(String[] args) throws IOException { Reader.init(System.in); n = Reader.nextInt(); for (int i = 0; i < n; i++) { rec[i] = Reader.nextInt(); } m = Reader.nextInt(); f("",0,0); if (!ok)System.out.println("None"); } static void f(String str, int num,int pos) { if (num > m) return; if (num == m) { System.out.println(str.substring(0,str.length() - 1)); ok = true; } for (int i = pos; i < n; i++) { f(str + rec[i] + " ", num + rec[i],i+1); } } } class Reader { static BufferedReader reader; static StringTokenizer tokenizer; static void init(InputStream input) { reader = new BufferedReader(new InputStreamReader(input)); tokenizer = new StringTokenizer(""); } static String next() throws IOException { while (!tokenizer.hasMoreTokens()) { tokenizer = new StringTokenizer(reader.readLine()); } return tokenizer.nextToken(); } static int nextInt() throws IOException { return Integer.parseInt(next()); } } #include<stdio.h> #include<string.h> #include<iostream> using namespace std; int arr[1005]; int vec[1005]; int m,n; bool flag=true; void bfs(int index,int now,int in){ if(now==m){ if(!flag)printf("\n"); for(int i=0;i<in-1;i++){ printf("%d ",vec[i]); } printf("%d",vec[in-1]); flag=false; return; } if(now>m||index>=n)return; vec[in]=arr[index]; bfs(index+1,now+arr[index],in+1); bfs(index+1,now,in); } int main(){ cin>>n; for(int i=0;i<n;i++){ cin>>arr[i]; } cin>>m; bfs(0,0,0); if(flag){ printf("None"); } return 0; }

最新回复(0)