注册 登录
编程论坛 Android开发

求解题思路

qq313629058 发布于 2016-11-08 16:23, 2041 次点击
大厅里有50盏灯,每盏灯都编了号码,分别为1-50。每盏灯由一个开关来控制。(开关按一下,灯亮,再按一下灯灭。开关的编号与被控制的灯相同。)开始时,灯是全灭的。现在按照以下规则按动开关。
第一次,将所有的灯点亮。
第二次,将所有2的倍数的开关按一下。
第三次,将所有3的倍数的开关按一下。
以此类推。第N次,将所有N的倍数的开关按一下。
问第49次按完以后,大厅里还有几盏灯是亮的?
要求:使用安卓技术,选用一个合适的布局方式,布置灯泡 ,大概排成10行5列。界面能看到第几次操作,直到第49次按完以后从灯泡图可以看出那盏灯 是亮的?那盏灯 是灭的?
2 回复
#2
fanlongbo2016-11-15 15:39
1首先布局选用GridView , 定义灯的对象 class Light {int number;  boolean isLight;   }
通过刷新gridView的适配的的数据来控制等的开关(adapter.notifiDatechang()  开关根据isLight控制  )   .

2算出按一次哪些灯的开关需要改变   规律:次数的倍数   定义次数为 int count;  可以遍历这五十个灯%count == 0的是符合条件的

List<Light> Lights = new List<Light>();  //总灯数 应该添加50 个灯number对应的1-50  代码就不写了

void changState(int count){    //按第n次需要改变的灯 只是当前这次不是累加
  
    for(int i = 0;i< Lights.size();i++){   
        Light light = Lights.get(i);
        int number = light.getNumber();
        if(number % count == 0){
            light.setIsLight(!light.getIsLight());
        }
    }
}
void getCountState(){   //按49次需要改变的
    for(int i = 0 ;i< 49;i++){
      changState(i);  
    }
}


3 通过getCountState() 方法后,Lights就是正确状态的bean,通过适配器的adapter 刷新下 就ok了  适配器需要根据字段 isLight 来判断是否显示


一些细节需要特殊处理,以上只是思路.


#3
wangdeyou862017-04-27 07:30
弄50个灯泡玩,好无聊哦
1