【GZOJ】1308——开灯关灯

本文介绍了GZOJ 1308题目的解法,这是一道关于3x3灯泡开关状态变化的问题。在给定的3x3灯泡矩阵中,每次操作会改变自身及其相邻灯泡的状态。任务是根据每个灯泡开关被按动的次数,计算最终灯泡的状态。解题思路包括简化输入,理解开关操作的等效性,以及通过迭代更新灯泡状态来求解。代码实现部分展示了如何处理这个问题。
摘要由CSDN通过智能技术生成

题目链接广大OJ1308
本题亦为广大15级第一次周赛的H题。

题目内容

Problem Description
有一个3*3的九宫格,每个格子上有一盏亮着的灯

1 2 3

4 5 6

7 8 9

当按动某盏灯的开关时,这盏灯和与它相邻的灯的状态都会发生改变(由亮变暗,由暗变亮)

例如当按动灯2时, 1 2 3 5这四盏灯的状态都要改变,当按动灯5时,2,4,5,6,8这5盏灯的状态都要改变

现在给你一个3*3的数字矩阵,表示每盏灯要按动的次数

例如数字矩阵

5 9 3

3 8 1

4 7 2 表示灯1要按5次,灯2要按动9次,灯3要按动3次……

Input
输入数据第一行是一个整数 T, 接下来有 T个例子

每个例子由3行整数组成,每行整数有3个,表示各盏灯要按动的次数(各个整数均在0到100之间)

Output
对于每个例子输出一个3*3的数字矩阵表示所有按动操作完成后9盏灯的状态, 0表示灯是

暗的,1表示灯是亮的

样例输出说明 :

例子1中只需要将灯1按动1次,所以1,2,4号灯变为暗而其他灯都是亮的

例子2中灯1,2,4各要按1次,最终的状态是灯1,3,7是暗的,其他灯是亮的

解法提示

假设数组元素 b[1] -> b[9] 表示相应位置操作的次数(b[1]表示灯1按动的次数, b[2]表示灯2按动的次数……)

数组元素 a[1] -> a[9] 表示相应位置总共变动的次数(a[1]表示灯1总共改变了a[1]次状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些关于如何使用Android Service开灯关灯的指导。 首先,您需要在AndroidManifest.xml文件中声明一个Service组件,以便在应用程序中使用。例如: ```xml <service android:name=".MyService" /> ``` 然后,您需要在MyService.java类中实现Service的逻辑。在这个类中,您可以使用Android的API来控制设备的灯光。 例如,您可以使用Camera类来打开和关闭设备的闪光灯。以下是一个示例代码: ```java public class MyService extends Service { private Camera camera; private boolean isFlashOn; @Override public int onStartCommand(Intent intent, int flags, int startId) { // 获取Camera实例 camera = Camera.open(); // 开启闪光灯 turnOnFlash(); return START_STICKY; } @Override public void onDestroy() { // 关闭闪光灯 turnOffFlash(); // 释放Camera资源 camera.release(); super.onDestroy(); } private void turnOnFlash() { if (!isFlashOn) { // 开启闪光灯 Camera.Parameters params = camera.getParameters(); params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); camera.setParameters(params); camera.startPreview(); isFlashOn = true; } } private void turnOffFlash() { if (isFlashOn) { // 关闭闪光灯 Camera.Parameters params = camera.getParameters(); params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); camera.setParameters(params); camera.stopPreview(); isFlashOn = false; } } @Override public IBinder onBind(Intent intent) { return null; } } ``` 在这个示例中,我们在Service的onStartCommand()方法中开启了闪光灯,并在Service的onDestroy()方法中关闭了闪光灯。您可以根据您的需求来修改这个代码。 最后,您可以在您的Activity中启动您的Service,例如: ```java Intent intent = new Intent(this, MyService.class); startService(intent); ``` 这样,您就可以使用Service来控制设备的灯光了。希望这个例子能够对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值