已解决。。。

#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 个赞

@吴柯晓 @方悦丞

这里有dfs

1 个赞

??

1 个赞

@吴柯晓 贪心基础组在后面有的

1 个赞

你这是假的dfs

2 个赞

?我不明白

1 个赞

??
@吴柯晓
?也我不明白

1 个赞

你那都没递归也没回溯,怎么能叫DFS呢

1 个赞

呃,谁说我用DFS了?
我用的是贪心

1 个赞

额,那你们讨论什么假DFS,真DFS的

1 个赞

我也不明白
但前边有个讨论DFS的话题
↑(超链接)

1 个赞

没链接上

1 个赞