#include<bits/stdc++.h>
using namespace std;
int t;
int n,m;
int main()
{
cin>>t;
for(int i=0;i<t;i++)
{
int a[105];
for(int j=0;j<=105;j++)
{
a[j]=0;
}
int k=0;
cin>>n>>m;
//cout<<"n:"<<n<<"m:"<<m<<endl;
for(int j=0;j<n;j++)
{
cin>>a[j];
//cout<<"a[j]"<<a[j]<<endl;
}
//Do Something
for(int j=0;j<n;j++)
{
if(j==0) //Begin
{
if(a[j]==0 && a[j+1]==0)
{
a[j]=1;
k++;
}
}
if(j==n-1) //End
{
if(a[j]==0 && a[j-1]==0)
{
a[j]=1;
k++;
}
}
if(a[j]==0 && a[j+1]==0 && a[j-1]==0) //Middle
{
a[j]=1;
k++;
}
}
if(k>=m)
{
cout<<"true";
}
else
{
cout<<"false";
}
for(int j=0;j<n;j++)
{
cout<<" a[j] "<<a[j];
}
}
return 0;
}
发一下题面
G. 种植花朵
Problem ID: 8424
Contest ID: 6238
必做题
Wrong Answer
题目描述:
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
给你一个长度为 n 的整数数组 a 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示已经种了花。问能否在不打破种植规则的情况下再种入 m 朵花?能则返回 true ,不能则返回 false。
输入格式:
第一行输入一个整数 t,表示 t 组数据。
对于每组数据:
第一行输入两个整数n,m。n表示花坛地块数,m表示需要种植的花朵数、
接下来一行,输入花坛地块种植花朵情况。
输出格式:
能否种植m朵花
样例输入1:
1
5 1
1 0 0 0 1
样例输出1:
true
约定:
1<=t,n,m<=100
提示:
加载最近代码
1
这代码真长!!
我还是基础进阶呢
看起来像贪心
dfs应该也可以
1 个赞
@方悦丞 没错 是贪心
1 个赞
你是算法班的吧?
1 个赞
呃贪心我不太会
dfs可以吗
1 个赞
??
1 个赞
@吴柯晓 贪心基础组在后面有的
1 个赞
你这是假的dfs
2 个赞
?我不明白
1 个赞
??
@吴柯晓
?也我不明白
1 个赞
你那都没递归也没回溯,怎么能叫DFS呢
1 个赞
呃,谁说我用DFS了?
我用的是贪心
1 个赞
额,那你们讨论什么假DFS,真DFS的
1 个赞
我也不明白
但前边有个讨论DFS的话题
↑(超链接)
1 个赞
没链接上
1 个赞