种植花朵 过了样例 WA0

:sob: :sob: :sob:

#include<bits/stdc++.h>
using namespace std;
int a[105],vis[105],s=0,n,m,k,xx,yy,zz;
bool dfs(int x){
	for(int i=1;i<=n;i++){
		if(vis[i]==0&&vis[i-1]!=1&&vis[i+1]!=1&&s!=0){
			vis[i]=1;
			s--;
		}
	}
	if(s==0){
		return true;
	}else return false;
}
int main(){
	cin>>k;
	while(k--){
		memset(vis,0,sizeof(vis));
		cin>>n>>m;
		s=m;
		for(int i=1;i<=n;i++){
			cin>>a[i];
			if(a[i]==1) vis[i]=1;
		}
		if(dfs(1)==true){
			cout<<"true";
		}else{
			cout<<"false";
		}
	}
	for(int i=1;i<=n;i++){
		cout<<vis[i]<<" ";
	}
}
4 个赞

题目

2 个赞

是啥

2 个赞

G. 种植花朵

Problem ID: 8424

Contest ID: 6238
题目描述:

假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。

给你一个长度为 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

题目是这个 :point_up_2:

5 个赞

你这dfs好奇怪

2 个赞

用贪心啊,用dfs干嘛

4 个赞

你这是dfs吗建议改函数名称

3 个赞

种植花朵wa0
贪心 (↑超链接)

1 个赞

dfs不应该是递归嘛???

1 个赞

他这是假的dfs

2 个赞

@tyx 本质是贪心吧

2 个赞

是的,你说得对

3 个赞

666,输出这个干嘛

4 个赞

???????大佬!!!!!

2 个赞

我没看出来!(愤)

2 个赞

不用了,我A了

2 个赞