两个算法

来源:互联网 发布:centos中文输入法安装 编辑:程序博客网 时间:2024/04/28 13:14
两个算法:
其一:
    public void BaoshuTest(int[] person, int k)
    {
        int len = person.length;
        int s =0;
        int c = 1;
        int[] flag = new int[len];
        for (int j = 0; j< len ;j++ )
        {
            flag[j] = 0;
        }
        int i =0;
        int count = 0;
        do
        {
            if ( flag[i] != k )
            {            
                flag[i] = c;
                c++;
                if (c > k)
                {
                    c = 1;
                    count++;
                }        
            }
            
            if (i == len-1)
            {
                i = 0;
            }
            else
                i++;
        
           for (int j = 0 ; j<person.length ; j++ )
           {
              System.out.print(flag[j] + " ");
           }
           System.out.println("/n");

           s++;

        }
        while (count < len-1);    
        int pos = 0;
        for (int j=0 ; j<len ; j++ )
        {
            if (flag[j] != k){ pos = j;break;}
            
                 
        }
        System.out.println(s);
        System.out.println("position is "+ (pos+1));

    }
其二:
public int BaoshuTest(int[] person, int k)
    {
        int len = person.length;
        int s =0;
        if (person.length > 2)
        {
            if (len >= k)
            {
                int[] newPerson = new int[len - len/k];
                for (int i = (len/k)*k; i< len; i++ )
                {
                    newPerson[i-(len/k)*k] = person[i];
                    s++;
                }
                int j = len - (len/k)*k ;
                for (int i = 0; i< (len/k)*k-1 ;i++ )
                {
                    s++;
                    if ((i+1) % k != 0 )
                    {
                        newPerson[j] = person[i];
                        j++;
                    }
                }
                System.out.println("进入子程序 person.length >= k");
                for (int i =0;i<len-len/k ;i++ )
                {
                    System.out.print(newPerson[i]+" ");
                }
                System.out.println("/n");
            //    System.out.println("/n" + (len-len/k) + " " + k);
                return s+BaoshuTest(newPerson, k);
            }
            else
            {
           
               
                    int[] newPerson = new int[len-1];
                    for (int i = k-(k/len)*len; i< len ; i++ )
                    { s++;
                        if (i-(k-(k/len)*len) < len-1)
                        {
                           newPerson[i-(k-(k/len)*len)] = person[i];
                        }
                    }
                    int j = len -(k-(k/len)*len);
                    for (int i =0 ;i< k-(k/len)*len-1;i++ )
                    {s++;
                       if ((i+1) %k !=0)
                      {
                         newPerson[j] = person[i];
                        j++;
                      }
                    }
                    System.out.println("进入子程序 person.length <k ");
                    for (int i =0;i<len-1 ;i++ )
                    {
                       System.out.print(newPerson[i]+" ");
                    }
                    System.out.println("/n");
                  //  System.out.println("/n"+ (len-1) + " " + k);
                 return  s + BaoshuTest(newPerson,k);               
            }   
        }

        else
            if (k %2 ==0)
            {
               System.out.println("最后的位置是:" + person[0]);
            }
            else
               System.out.println("最后的位置是:" + person[1]);
            return s;
    }


原创粉丝点击