public class Solution {
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = 6;
int[] sticks = new int[num];
String line = br.readLine();
String[] strs = line.trim().split("\\s+");
for(int i=0;i<num;i++)
{
sticks[i] = Integer.parseInt(strs[i]);
}
recursion(sticks,num);
}
public static void recursion(int[] sticks,int num)
{
int min_num = findMin(sticks,num);
int cut=0;
for(int i=0;i<num;i++)
{
sticks[i] = sticks[i] - min_num;
cut++;
}
int[] res = minArray(sticks,num);
System.out.println(cut);
int len = res.length;
while(len != 0)
{
recursion(res,len);
}
}
public static int findMin(int[] arr,int size)
{
int minimum = arr[0];
for(int i=0;i<size;i++)
{
if(arr[i] < minimum)
{
minimum = arr[i];
}
}
return minimum;
}
public static int[] minArray(int[] arr, int size)
{
int count=0;
int flag =0;
for(int i=0;i<size;i++)
{
if(arr[i] != 0)
{
count++;
}
}
if(count == 0)
{
flag = 1;
}
else
{
flag = 0;
}
int[] new_array = new int[count];
if(count != 0)
{
int j=0;
for(int i=0;i<size;i++)
{
if(arr[i] != 0)
{
new_array[j] = arr[i];
j++;
if(j > count)
{
break;
}
}
}
}
return new_array;
}
}
这里从minArray我还想将flag变量传递回递归方法,以便我可以检查它作为我的基类
所以我的程序尝试做的是 在6支长度中输入6支长度我们试图找到最小长度并从所有剩余的支柱中减去该长度,这将最终导致一条或多条最小长度的支柱变为零,因此我只提取非零元素并生成另一条阵列并重复相同,直到所有的棍子都用完为止。 同时我打印每个最小棒长度切割的棒数。
所以, 如果我的输入是5 4 4 2 2 8
输出是: 6 4 2 1