判断是否可以关灯

 

Description

给你 n 个开关和 m 个灯。 第 i 个开关打开某一些灯。 该信息以矩阵形式(n 行 m 列),如果第 i 个开关能打开第 j 个灯,则 a ij = 1,如果不能打开则 a ij = 0

 

最初,所有 m 灯都关闭。

 

开关状态仅能从“关”变为“开”。 这意味着如果两个或更多开关连接到同一个灯,那么在任何一个开关被按下后,灯将会开启,并且即使连接到这个灯的任何其他开关被按下,它也将保持开启。

 

保证如果你打开所有 n 个开关,那么所有的 m 个灯都将打开。

 

你的任务就是找出是否存在这样一个开关,如果你忽略(不使用)它,而是按下所有其他的n-1个开关,那么所有的m个灯都将打开。

Input

输入的第一行包含两个整数 n 和 m(1 ≤ n, m ≤ 2000) - 开关的数量和灯的数量。

 

以下n行每行包含m个字符。 如果第i个开关打开第j个灯,则字符 a ij 等于 '1',否则等于 '0'。

 

保证如果你按下所有 n 个开关,所有 m 个灯都将被打开。

Output

如果有一个开关,如果你忽略它并按下所有其他的n - 1开关,所有的m灯都将打开,输出“YES”, 如果没有这样的开关,输出“NO”。

Sample Input

Input

4 5
10101
01000
00111
10000

Output

YES

 

Input

4 5
10100
01000
00110
00101

Output

NO

注意:输入就是一个坑,要把它转换成字符再存到数组中,因为没有空格

思路:先判断每一行有几个1,在判断有1的每一列是否还有1,有1就标记一下,在循环中加加一下,要是最终的数等于上面1的个数 就是找出来了,跳出就行,要是没有,遍历下一行

注意break,没加上是时间超限

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int a[2001][2001];
int main()
{
    char c;
    int n,m,i,j,k,f=0;
    scanf("%d%d",&n,&m);
    getchar();
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            c=getchar();
            a[i][j]=c-48;
        }
        getchar();
    }
    for(i=0;i<n;i++)
    {
        int aa=0;
        
        int b=0;
        for(j=0;j<m;j++)
        {
            int p=0;
            if(a[i][j]==1)
            {
                aa++;
                for(k=0;k<n;k++)
                {
                    if(k!=i)
                        if(a[k][j]==1)
                           {p=1;break;}
                }
            }
            if(p==1)
                    b++;
        }
        if(aa==b)
        {
            printf("YES\n");
            f=1;
            break;
        }
    }
    if(f==0)
    printf("NO\n");
    return 0;
}

 

在JavaScript,Document Object Model (DOM) 是一种处理HTML文档的标准方式,可以让我们动态地读取、修改和操作网页元素。如果你想通过DOM实现“开”和“关灯”的操作,通常会涉及以下几个步骤: 1. **获取元素**:首先,需要找到代表的HTML元素,例如一个`<button>`标签,假设其id为"light-switch"。 ```javascript const lightButton = document.getElementById("light-switch"); ``` 2. **添加事件监听器**:给这个按钮添加点击事件监听器,当用户点击时执行相应的操作。 ```javascript lightButton.addEventListener("click", function() { // 开关灯的逻辑将放在这里 }); ``` 3. **定义开关灯的行为**:对于开,你可能想要改变相关元素的状态(比如更改颜色或显示文字),如果是模拟物理开关,则可能需要改变CSS样式。关灯则相反。这里我们可以创建两个函数分别表示这两种情况。 ```javascript function turnOnLight() { // 改变状态,例如设置背景色为白色(开) lightButton.style.backgroundColor = "white"; // 或者改变文本内容为"开" lightButton.textContent = "开"; } function turnOffLight() { // 改变状态,例如设置背景色为黑色(关灯) lightButton.style.backgroundColor = "black"; // 或者改变文本内容为"关" lightButton.textContent = "关"; } ``` 4. **在事件处理器调用相应函数**: ```javascript lightButton.addEventListener("click", function() { if (/* 判断当前状态 */){ turnOnLight(); } else { turnOffLight(); } }); ``` 这里需要添加一个判断条件来确定当前是开还是关灯状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值