首页 > 编程语言 >Problem P20. [算法课蛮力法]种花问题

Problem P20. [算法课蛮力法]种花问题

时间:2022-09-20 13:56:48浏览次数:45  
标签:return int flowerbed 种花 P20 Problem include true size

我写的并不好,力扣上有比这更好的方法
我的思路:从头遍历数组,检查位置是否能放下花,能放就放下,然后检查下一个位置,注意放下之后就改变了数组。然后就是注意前后数组越界,注意数组只有一个数时的情况。

#include<iostream>
#include<bits/stdc++.h>
#include<cstdio>
#include<string>

using namespace std;


class Solution {
public:
    bool canPlaceFlowers(vector<int>& flowerbed, int n) {
        int num = 0;
        if (flowerbed.size() == 1){
            if (flowerbed[0] == 0 && n < 2 || n == 0){
                return true;
            }else {
                return false;
            }
        }
        for (int i = 0; i < flowerbed.size(); i++){
            //cout << i << endl;
            if (flowerbed[i] == 0){
                if (i == 0 && flowerbed[1] == 0){
                    flowerbed[i] = 1;
                    num++;
                }else if (i != 0 && flowerbed[i-1] == 0){
                    if (i == flowerbed.size()-1){
                        flowerbed[i] = 1;
                        num++;
                    }else if (flowerbed[i+1] == 0){
                        flowerbed[i] = 1;
                        num++;
                    }
                }
            }
        }
        if (num >= n){
            return true;
        }else {
            return false;
        }
    }
};


int main()
{
    vector<int> flowerbed;
    int n;
    while(true){
        int c;
        int ret = scanf("%d", &c);
        if (ret == EOF){
            break;
        }
        flowerbed.push_back(c);
    }
    n = flowerbed[flowerbed.size()-1];
    flowerbed.pop_back();
    Solution* so = new Solution();
    if (so->canPlaceFlowers(flowerbed, n)==true){
        cout << "true";
    }else {
        cout << "false";
    }
    return 0;
}

标签:return,int,flowerbed,种花,P20,Problem,include,true,size
From: https://www.cnblogs.com/understanding-friends/p/16710785.html

相关文章

  • temp2022
    importsmtplibfromemail.mime.textimportMIMEText#第三方SMTP服务mail_host="smtp.qq.com"#设置服务器(smtp.163.com是网易邮箱服务器,smtp.qq.com是......
  • CSP2022游记
    本来不想说出题人不好的。但刚好抽到英语课课前演讲,主题是我最讨厌的人。没办法只好委屈出题人了ThetopicofmyspeechtodayisthepersonIhatethemost.Thepers......
  • Problem P18. [算法课贪婪]6和9组成的最大数字
    贪心:把9换成6是不可能的,只有把6换成9,而且要换就换最高位的那个6C++:to_string可以将整数转化为string类型,stoi可以将string转化为int类型,这个好用!#i......
  • Problem P17. [算法课贪婪]分发饼干
    力扣也有这道题,但是力扣做的很快,碰到有输入输出的题目就感觉我在做两道题目,一道是如何输入两行,每行是一个不定长的数组元素,最后在代码中转为数组,c++不好做,c的话可能就更......
  • Problem P24. [算法课回溯]组合问题
    采用递归遍历所有可能性,再使用剪枝减小运行时间,利用回溯,代码有注释#include<iostream>#include<bits/stdc++.h>#include<cstdio>#include<string>usingnamespace......
  • 2022ICPC网络赛 L LCS-like Problem(DP 子序列自动机)
    LLCS-likeProblem(DP子序列自动机)题目:​ 给出两个串s,t。请找出一个最长的子序列\(s'\),使其与\(t\)的最长公共子序列长度不大于1。输出这个最长的长度。思路:​ 题目......
  • CSP2022游记
    初赛Day0数学考了124分,吃枣药丸。再不退役whk要没了。Day1一点钟到机房发现发了J组题目,看了看发现自己并不能很快地理解阅读T3的牛顿迭代和T2的鹰蛋问题。感觉如果去......
  • csp2022第一轮游记
    DAY-7?学校没买桶装水!我一时半会不去打水,真的渴。果不其然开始咳嗽了。DAY-1隔壁班同学主动申请停课了,我也跟来复习,这天主要的成果是把选择题错误控制到2-3题,顺便整理了......
  • CSP2021-s题解
    T1廊桥分配题目链接P7913[CSP-S2021]廊桥分配\(Lemma:\)对于已经存在的廊桥集合,加入新的廊桥不会影响之前分配好的航班。证明:由于题目所给限制,若有空廊桥,则航......
  • 「比赛游记」CSP2022游记
    「比赛游记」CSP2022游记点击查看目录目录「比赛游记」CSP2022游记先咕着,有时间补。......