案例1:
package merrimin;
import java.util.ArrayList;
import java.util.List;
public class Josephus {
public static void main(String[] args) {
int num = 8; // 总人数
try {
Josephus jose = new Josephus();
List<Integer> list = new ArrayList<Integer>();
list.add(0);
for (int j = 1; j <= num; ++j) {
list.add(j);
}
jose.getPerson(list);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
private int getPerson(List list) {
int index = 0; // 最后一个出列人的索引
for (int i = 1; i < list.size(); i++) {
// 点到的人出列
if (i % 4 == 0) {
list.remove(i);
}
index = i;
if (list.size() > 4) {
getPerson(list);
}
}
return index;
}
}
案例1.2:
package merrimin;
import java.util.Arrays;
public class King {
public static void main(String[] args)
{
getPerson(8, 4);
}
public static void getPerson(int total,int num)
{
//定义一个数值true 表示未出列,false 表示已出列
boolean []arr=new boolean[total];
Arrays.fill(arr, true);
//移动变量
int next=1;
//数组下标
int index=0;
//剩余人数
int count=total;
//若剩余人数为1,停止报数
while(count>1)
{
if(arr[index]==true)
{
if(next==4)
{
arr[index]=false;
//剩余人数减1
--count;
//启始量归一
next=1;
System.out.println("依次出列的人为:"+(index+1));
}else
{
++next;
}
}
++index;
if(index==total)
{
//数组下标复位,从0开始遍历
index=0;
}
}
for(int i=0;i<total;++i)
{
if(arr[i]==true)
{
System.out.println("最后出列的人是:"+(i+1));
}
}
}
}
案例1.3
package merrimin;
import java.util.Arrays;
public class King {
public static void main(String[] args)
{
getPerson(8, 4);
}
public static void getPerson(int total,int num)
{
//定义一个数值true 表示未出列,false 表示已出列
boolean []arr=new boolean[total];
Arrays.fill(arr, true);
//移动变量
int next=1;
//数组下标
int index=0;
//剩余人数
int count=total;
//若剩余人数为1,停止报数
while(count>1)
{
if(arr[index]==true)
{
if(next==4)
{
arr[index]=false;
//剩余人数减1
--count;
//启始量归一
next=1;
System.out.println("依次出列的人为:"+(index+1));
}else
{
++next;
}
}
++index;
if(index==total)
{
//数组下标复位,从0开始遍历
index=0;
}
}
for(int i=0;i<total;++i)
{
if(arr[i]==true)
{
System.out.println("最后出列的人是:"+(i+1));
}
}
}
}
案例2 Daffodil Numbers:
//import java.util.*;
public class Daffodil {
public static void main(String[] args) {
int hundred = 0;
int tens = 0;
int unit = 0;
int n=3;
for (int i = 100; i<999; ++i) {
hundred = i / 100;
//tens = i % 100 / 10;
tens=(i-hundred*100)/10;
unit = i % 10;
if (Math.pow(hundred, n) + Math.pow(tens, n) + Math.pow(unit, n) == i) {
System.out.println(i + "是水仙花数\n");
}
}
}
}
案例3 Test 100 fowls with 100 yuan:
public class test {
public static void main(String[] args) {
int i = 0;
int j = 0;
int k = 0;
while (i <= 20) {
j = 0;
while (j <= 33) {
k =100-i-j;
if (k%3==0 && 5*i+3*j+k/3==100) {
System.out
.println("公鸡,母鸡,小鸡的数量分别是" + i + "," + j + "," + k);
}
j++;
}
i++;
}
}
}
案例4 BubbleSort:
import java.util.Scanner;
public class BubbleSort {
// 排序方法(由大到小)
public static void Sort(int[] arry){
for(int i=arry.length-1;i>0;i--)
{
for(int j=0;j<i;j++)
{
if(arry[i]>arry[j]) //如果后面的大于前面的 则交换顺序
{
int temp; //相当于装满油的桶,和装满水的桶,互换的时候,需要一个空的桶。temp现在就是那个空桶
temp=arry[i];
arry[i]=arry[j];
arry[j]=temp;
}
}
}
System.out.println("排序结果为:"); //打印排序结果
for(int i=0;i<arry.length;i++)
{
System.out.print(arry[i]+",");
}
}
public static void main(String[] args){
int[] arry=new int[10];
Scanner scan=new Scanner(System.in); //接收被排列数字
System.out.println("请输入10个数...");
for(int i=0;i<arry.length;i++){ //接收数字赋给数组
arry[i]=scan.nextInt();
}
Sort(arry); //调用排列方法
}
}