如何使方法返回整数数组和另一个整数

时间:2014-09-21 04:04:29

标签: java arrays recursion return-value return-type

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

0 个答案:

没有答案