LeetCode—605. 種花問題
1962 ワード
LeetCodeテストは本当に細かいですが、使い心地が悪いので、main()を書いてください.自分で書いてください.
1つのシーケンスは最前に2つの0の特判を連続して、0番目に1を置いて、中間シーケンスは3つの0を連続して、中間0は1を置いて、最後に2つの0を連続して、後の1つの0は1を置きます.答えを集計
原始的な考え方は:if-elseの面倒が多い
#include
#include
int canPlaceFlowers(int* A, int size, int n) {
int i,sum=0,j,t;
if(size==1)
{
if(A[0]==0&&n==1)
return 1;
}
else//size>=2
{
if(A[0]==0&&A[1]==0)
{
A[0]=1;
sum++;
}
for(i=1;i<=size-3;i++)
{
if(A[i]==0&&A[i+1]==0&&A[i+2]==0)
{
A[i+1]=1;
sum++;
}
}
if(A[size-2]==0&&A[size-1]==0)
{
A[size-1]=1;
sum++;
}
}
if(sum>=n)
return 1;
else
return 0;
}
int main()
{
int A[]={0,1,0};
int k=canPlaceFlowers(A,3,1);
if(k==1)
printf("true
");
else
printf("false
");
return 0;
}
考え方:1つのシーケンスは最前に2つの0の特判を連続して、0番目に1を置いて、中間シーケンスは3つの0を連続して、中間0は1を置いて、最後に2つの0を連続して、後の1つの0は1を置きます.答えを集計
原始的な考え方は:if-elseの面倒が多い
#include
#include
int canPlaceFlowers(int* A, int size, int n) {
int i,sum=0,j,t;
if(size==1)
{
if(n==1&&A[0]==0)
sum++;
A[0]=1;
}
else
{
for(i=0;i<=size-2;i++)
{
if(A[i+1]==0)
{
if(A[i]==0)
{
A[i]=1;
sum++;
}
i++;
}
else
{
i=i+2;
}
}
if(A[size-2]==0&&A[size-1]==0)
{
A[size-1]=1;
sum++;
}
}
if(sum>=n)
return 1;
else
return 0;
}
int main()
{
int B[]={1,0,0,0,1};
int k=canPlaceFlowers(B,5,1);
if(k==1)
printf("true
");
else
printf("false
");
return 0;
}