prepare

来源:互联网 发布:sql导入sybase数据 编辑:程序博客网 时间:2024/05/01 17:44


package org.bian;/* * 一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。注:电灯数和学生数一致。 */public class Bulb {public static void main(String[] args) {int n=5;Bulb bb= new Bulb();int m=bb.lightBulb(n);System.out.print(m);}public int lightBulb(int n){int[] light =new int[n];int count=0;for(int i=0;i<n;i++){light[i]=1;}if(n%2==0){light[0]=0;}else light[0]=1;for(int i=1;i<n;i++){for(int j=1;j<n;j++){if(j%i==0){if(light[j]==1){light[j]=0;}else if(light[j]==0){light[j]=1;}}}}for(int k=0;k<n;k++){if(light[k]==1)count++;}return count;}}



package org.bian;/*使用数组实现约瑟夫环问题 *由m个人围成一个首尾相连的圈报数。 *从第一个人开始,从1开始报数,报到n的人出圈, *剩下的人继续从1开始报数,直到所有的人都出圈为止。 *对于给定的m和n,求出所有人的出圈顺序. */public class Josseph {public static void main(String[] args) {int m=30;int n=9;System.out.println(joSeph(m, n));}public static String joSeph(int m, int n) {int[] a = new int[m];for (int i = 0; i < a.length; i++) {a[i] = i + 1;}int i = 0;int j = 1;int len=a.length;String str="";while(len>0){if(a[i%m]>0){if(j%n==0){a[i%m]=-1;str +=i%m+",";j=1;i++;len--;}else{i++;j++;}}else{i++;}}return str;}}


// Febonaccipublic static void main(String[] args) {int n=60;Fibonacci fb= new Fibonacci();System.out.println(fb.fbnc(n));}public int fbnc(int n){int []f= new int[n];f[0]=0;f[1]=1;for(int i=2;i<n;i++){f[i]=f[i-1]+f[i-2];}return f[n-1]+f[n-2];}}