java 圆桌_约瑟夫问题求解释(圆桌问题)Java
publicclassJosephus{publicstaticvoidmain(Stringargs[]){if(args.length!=2)//處理參數數目不正確情況{System.out.println("PleaseInputanumber!");return;}inti,j,n,m;n=Integer.p...
public class Josephus
{
public static void main(String args[])
{
if(args.length != 2) //處理參數數目不正確情況
{
System.out.println("Please Input a number!");
return;
}
int i, j, n, m;
n = Integer.parseInt(args[0]);
m = Integer.parseInt(args[1]);
if (n <= 0 || m <= 0) //處理參數值不正確的情況
{
System.out.println("Paramter must bigger than zero!");
return;
}
int a[] = new int[n];
for (i = 0; i < n; i++) a[i] = i + 1;
int k = 1; //標識處理第k個離開的人
i = -1; //數組下標,下一個為0,即第一個人
while (true) //k等于n表示只剩下一個人了
{
for (j = 0; j < m;) //在圈中數m個人
{
i = (i + 1) % n;
if (a[i] >0) j++; //a[i] >0表示第i個人還沒有離開
}
if(k==n) break;
System.out.println("No." + a[i] + " is out!");
a[i] = -1; //表示該人離開
k++;
}
System.out.println("No." + a[i] + " is the winner!");
}
}
主要是我不明白while循環里面語句的意思,希望能過盡量把原理說明白一點。多謝了
展開
總結
以上是生活随笔為你收集整理的java 圆桌_约瑟夫问题求解释(圆桌问题)Java的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hive sql插入一行数据_Hive查
- 下一篇: java库net2.0下载_.NET F