0
残りのコインを最小限の数だけ返すプログラムを作成しています。入力に私はコインカットとその金額のセットを持っています。私は慎重に動作するJavaクローンをやった。今私はそれをC言語にする必要があります。私はそれほど準備ができていない言語です。誰でも助けてくれますか? 私の主な問題は、結果をCに返す方法です。javaは、配列全体のリストとして返されます。これらのように:[1、0、0、1、0]C言語のプログラムにJavaクラスを変換
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Change {
int[] values = {10,20,50,100,200};
public static void main(String[] args) {
int[] values = {7, 2, 3, 6, 0};
int[] ammounts = {1, 1, 1, 1, 0};
List<Integer[]> results = solutions(values, ammounts, new int[5], 13, 0);
for (Integer[] result : results){
System.out.println(Arrays.toString(result));
}
}
public static List<Integer[]> solutions(int[] values, int[] ammounts, int[] variation, int price, int position){
List<Integer[]> list = new ArrayList<>();
int value = compute(values, variation);
if (value < price){
for (int i = position; i < values.length; i++) {
if (ammounts[i] > variation[i]){
int[] newvariation = variation.clone();
newvariation[i]++;
List<Integer[]> newList = solutions(values, ammounts, newvariation, price, i);
if (newList != null){
list.addAll(newList);
}
}
}
} else if (value == price) {
list.add(myCopy(variation));
}
return list;
}
public static int compute(int[] values, int[] variation){
int ret = 0;
for (int i = 0; i < variation.length; i++) {
ret += values[i] * variation[i];
}
return ret;
}
public static Integer[] myCopy(int[] ar){
Integer[] ret = new Integer[ar.length];
for (int i = 0; i < ar.length; i++) {
ret[i] = ar[i];
}
return ret;
}
}
これは一瞬のために私のコードです:
MY STRUCT:
struct coin {
unsigned int value_coin; // value money
unsigned int number_coin; // amount money
};
struct rest {
unsigned int max_lenght;
struct coin *coin;
};
struct variation {
int lenght;
int *variation;
};
struct final_list {
int lenght;
variation *variation;
};
あなたは何を試しましたか? –
私の質問を編集する –
[MCVE](http://stackoverflow.com/help/mcve)を提供してください。さらに、サンプルコードは、(Javaコードの場合と同様に)英語のみを使用すると読みやすく、理解しやすくなります。 – Scheff