7-12 找零钱***
原创
©著作权归作者所有:来自51CTO博客作者tizzi的原创作品,请联系作者获取转载授权,否则将追究法律责任
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;
}