现在有100个灯泡,每个灯泡都是关着的,灯泡排序为1~100,接着将2的倍数的灯泡开关按一下,然后将3的倍数的灯泡开关按一下……直到将N的倍数的灯泡开关按一下,最后统计灯泡亮着的数目。
算法思路:
1.将灯泡数存入数组
2.数组都默认值为0
3.将N的倍数的灯泡从2~N改变一下数值,若灯泡本身为0,则赋值1,否则赋值为0
class Light{ public static void main(String[] args){ int[] nums = new int[100]; int index = 0; int N = 2; for (int i=0;i<100;i++){ nums[i] = 0; } for (int i=2;i<=N;i++){ for (int j=1;j<100;j++){ index = j+1; if ( index>=i&&index%i==0){ if (nums[j]==0){nums[j]=1;} else {nums[i]=0;} } } } int count = 0; for (int i=0;i<100;i++){ if (nums[i]==1){count++;} } System.out.println("result="+count); } }
探讨了100个初始关闭的灯泡,通过连续翻转2到N倍数灯泡的状态,最终统计亮灯数量的算法实现。采用数组记录灯泡状态,遍历并翻转特定倍数的灯泡,最终计数亮灯总数。
2432

被折叠的 条评论
为什么被折叠?



