一群人围成一个圈,依次1,2,3,4报数,数到4的人出列,求最后出列的哪个人!
谢谢。
题目就是这样。。
希望知道的人给个Java代码答案!
谢谢。
题目就是这样。。
希望知道的人给个Java代码答案!
解决方案 »
- dwr页面取出list循环显示在table中
- jsp学习之路,前辈赐教
- 新手struts2问题
- 下载一个网站遇到hidden生成的字符串问题
- JSP有关数组和输出的问题
- HashMap的取值转型问题
- b/s结构怎么控制同一个账号同时只允许一个人使用?急!!
- 有关于日期型的表单提交的验证!
- 请问:<action-mappings>中<action path="/editRegistration" 什么意思?
- JavaBean 中否可直接访问与修改 session 和application参数的值.
- Java过滤器问题~!请教各位!
- 急!请教各位大侠:测试数据库连接Bean的JSP怎么返回结果是NULL
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
for(i=0;i<n;i++)
*(p+i)=i+1;
i=0;
k=0;
m=0;
while(m<n-1)
{
if(*(p+i)!=0) k++;
if(k==4)
{ *(p+i)=0;
k=0;
m++;
}
i++;
if(i==n) i=0;
}
while(*p==0) p++;
printf("%d is left\n",*p);
}
import java.util.*;public class yang {
List lst=new ArrayList();
public List test(){
for(int j=1;j<=100 ;j++){lst.add(j);}
int k=0; while(lst.size()>1){
for(int j=0;j<lst.size();j++)
{ k++;
if(k==4){
lst.remove(j);
j=j-1;
k=0;
}}}
return lst;
}
public static void main(String[] args) {
yang yang = new yang();
System.out.println(yang.test().get(0).toString() ) ;
}}
//n个人 第out出列
static void circle(int n,int out){
int []arr=new int[n];
int index=0;
int count=0;
int outCount=0;
while(true){
if(arr[index]==0){
count++;
if(count%out==0){
if(outCount==n-1){
System.out.println("最后出列:"+(index+1));
return;
}
arr[index]=1;
outCount++;
}
}
index=(index+1)%n;
}
}
{
private int getPerson(List list)
{
int index = 0;
for(int i = 1;i<=list.size();i++;)
{
这个意思是如果i%4==0说明当前为应该出列的那个人,这样就三删除它。
if(i%4 ==0)
{
list.remove(i);
}
这里index的值就为最后一个删除的人的索引。
index = i;
}
由于循环一遍所删除的个数仅为list的总长度除以4的值,因为是一个圈,所以继续对list进行循环。直到里面没有已经没有4个以上元素位置
这个时候循环就返回最后一个被删除的索引。
if(list.size()>4)
{
getPerson(list);
}
return index;
}
public static void main(String[] args)
{
Test t = new Test();
//n为你人的总数
int n = 25;
List<Integer> list = new Integer<Integer>();
由于list的索引是从0开始,所以这里先为这个list添加一个站位置的值,这个值没有任何意义,为了方便在方法里面计算
真正的人的索引是从1开始的,这样在上面的循环中就从1开始判断。了
list.add(0);
for(int j = 1;j<=n;j++)
list.add(j);
t.getPerson(list);
}
}
public class Count4Quit
{
public static void main(String[] args)
{
boolean[] arr = new boolean[500];
for(int i=0;i<arr.length;i++)
{
arr[i] = true;
}
int leftCount = arr.length;
int countNum = 0;
int index = 0; while (leftCount >1)
{
if(arr[index] == true)
{
countNum++;
if(countNum == 4)
{
countNum = 0;
arr[index] = false;
leftCount --;
}
}
index++; if(index == arr.length)
{
index = 0;
}
} for(int i=0;i<arr.lenght;i++)
{
if(arr[i] == true)
{
System.out.println(i);
}
}
}
}