列表

详情


OR119. 01序列

描述

给定一个数组metrix,数组中只包含1和0,且数组中的1都不相邻,输入一个数n,问能否在将数组中n个0替代换成1后不破坏1都不相邻的条件。
例1 metrix=[1,0,0,0,1],n=1输出true
例2 metrix=[1,0,0,0,1],n=2输出false

输入描述

输入一个数m(1≤m≤100000)表示metrix的长度

第二行m个数 0或1 表示改位置数组中的元素是0还是1

第三行输入一个数n

输出描述

输出true或false

示例1

输入:

5
1 0 0 0 1
1

输出:

true

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 372KB, 提交时间: 2020-07-05

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int count=0,m,x;
    int flag = 0;   //0 | x x ... x | 0
       
    while(n>0)
    {
        scanf(" %d",&x);
        if(x == 0) flag++;
        if(flag == 3)
        {
            flag = 0;
            count++;
        }
           
        n--;
    }
    if(flag == 2) count++;  // x 0 0 | 0
       
    scanf("%d",&m);
    if(m > count) printf("false\n");
    else printf("true\n");
       
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-07-29

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int count=0,m,x;
    int flag = 0;   //0 | x x ... x | 0
        
    while(n>0)
    {
        scanf(" %d",&x);
        if(x == 0) flag++;
        if(flag == 3)
        {
            flag = 0;
            count++;
        }
            
        n--;
    }
    if(flag == 2) count++;  // x 0 0 | 0
        
    scanf("%d",&m);
    if(m > count) printf("false\n");
    else printf("true\n");
        
    return 0;
} 

上一题