日期:2014-05-20  浏览次数:20569 次

java编程求解
2009人站成一排由左到右依次从1开始报数,报奇数的出列,报偶数的再站成一排由左到右依次从1开始报数,依次类推,最后只剩下一个人。问这个人在第一次报数中报的是多少?
要求:1.用java编程实现
  2.本人初学java,要有详细的注释

------解决方案--------------------
public class technics {
public static void main(String args[])
{
int n=2009,i,k=0,a[],total=1,l=1,m;
a=new int[1010];
while(n>=1)
{
for(i=1;i<=n;i++) //顺序报数,使每趟的奇数出列,偶数继续排队
{
if(i%2==0)
{
a[l++]=i;
}
l=1;
}
k++;
n=n/2;
}
for(m=1;m<=k+1;m++) //排列结束
{
a[1]*=2;
}
System.out.printf("这个人在第一次报的数是"+a[1]);

}
}


------解决方案--------------------
Java code

public static void main(String ag[]) {
       int[] array=new int[2009];
       
       for(int i=2009;i>1;)
       {
           for(int j=0, k=0;j<2009;j++)
           {
               if(array[j]!=1)
               {
                   if(k%2==0)
                   {
                       array[j]=1;
                       i--;
                   }
                   k++;
               }
           }
       }
       for(int i=0;i<2009;i++)
       {
           if(array[i]==0)
           System.out.println(i+1);
       }
    }