冯泉清
(冯泉清)
2
把格式调一调吧
选中代码之后,按
,就能变成代码格式了。
#include<bits/stdc++.h>
using namespace std;
int t,n,m,a[105];
int main()
{
cin>>t;
while(t--)
{
cin>>n>>m;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
if(n==1 && a[n]==0) m--;
else if(n==1 && a[n]==1) m--;
else
{
for(int i=1;i<=n;i++)
{
if(i=1 && a[i]+a[i+1]==0) {a[i]=1;a[i+1]=1;m–;}
else if(i=n && a[i-1]+a[i]==0) {a[i-1]=1;a[i]=1;m–;}
else if(a[i-1]+a[i]+a[i+1]==0) {a[i-1]=1;a[i]=1;a[i+1]=1;m–;}
}
}
if(m==0) printf("true\n");
else printf("false\n");
}
return 0;
}
if(i=1 && a[i]+a[i+1]==0) {a[i]=1;a[i+1]=1;m–;}
else if(i=n && a[i-1]+a[i]==0) {a[i-1]=1;a[i]=1;m–;}
else if(a[i-1]+a[i]+a[i+1]==0) {a[i-1]=1;a[i]=1;a[i+1]=1;m–;}
你后面加个continue试试?
1 个赞
袁少
(烈焰·行仓)
4
else if(n==1 && a[n]==1) m--;
去掉试试?
1 个赞
袁少
(烈焰·行仓)
5
#include<bits/stdc++.h>
using namespace std;
int t,n,m,a[105];
int main()
{
cin>>t;
while(t--)
{
cin>>n>>m;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
if(n==1 && a[n]==0) m--;
else
{
for(int i=1;i<=n;i++)
{
if(i==1 && a[i]+a[i+1]==0) {a[i]=1;a[i+1]=1;m–;}
else if(i==n && a[i-1]+a[i]==0) {a[i-1]=1;a[i]=1;m–;}
else if(a[i-1]+a[i]+a[i+1]==0) {a[i-1]=1;a[i]=1;a[i+1]=1;m–;}
}
}
if(m==0) printf("true\n");
else printf("false\n");
}
return 0;
}
[/quote]
1 个赞
袁少
(烈焰·行仓)
6
#include<bits/stdc++.h>
using namespace std;
int t,n,m,a[105];
int main()
{
cin>>t;
while(t--)
{
cin>>n>>m;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
if(n==1 && a[n]==0) m--;
else
{
for(int i=1;i<=n;i++)
{
if(a[i-1]+a[i]+a[i+1]==0)
{
m--;
a[i]=1;
}
}
}
if(m==0) printf("true\n");
else printf("false\n");
}
return 0;
}
1 个赞
袁少
(烈焰·行仓)
8
#include <bits/stdc++.h>
using namespace std;
int n,m,q,a[105];
int main()
{
cin>>q;
while(q--)
{
memset(a,0,sizeof(a));
cin>>n>>m;
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
{
if(!(a[i]+a[i-1]+a[i+1]))
{
a[i]=1;
m--;
}
}
if(m>0)cout<<"false"<<endl;
else cout<<"true"<<endl;
}
return 0;
}
1 个赞
林嘉乐
(A_GreenBlueBerry)
9
解决了,谢谢
#include<bits/stdc++.h>
using namespace std;
int t,n,m,a[105];
int main()
{
cin>>t;
while(t--)
{
cin>>n>>m;
memset(a,0,sizeof a);
for(int i=1; i<=n; i++) scanf("%d",&a[i]);
for(int i=1; i<=n; i++)
if(a[i-1]+a[i]+a[i+1]==0)
{
a[i]=1;
m--;
}
if(m<=0) printf("true\n");
else printf("false\n");
}
return 0;
}
问题:
1.没初始化a数组
2.第一次写的代码有vis数组,后面忘记去掉↓
a[i-1]=1;
a[i+1]=1;
对原数组不能进行此操作,与 a[i-1]+a[i]+a[i+1]==0 配合使用会产生错误
3.if(m==0) printf("true\n");中m<0的情况也成立,逻辑运算符错误