gat_Coding @ 2024-07-14 22:24:21
0分,问题代码如下
#include <iostream>
using namespace std;
int main()
{
int n,a[2000],i,i2,i3=0,i4=0,s,bl=0;
cin>>n;
for(i=0;i<n*n;i+=a[i])
{
cin>>a[i];
i4++; //样例中此处i4=14
}
for(i=0;i<i4;i++) //此处问题一
{
for(i2=0;i2<a[i];i2++)
{
cout<<bl;
i3++;
if(i3==n)
{
cout<<endl;//此处问题二
i3=0;
}
}
if(bl==0)
bl=1;
else
bl=0;
}
return 0;
}
问题一:为什么整个for循环都只有一个i++,却不能循环14次?(只有不到8次)
问题二:为什么换行之后退出了循环,不继续打印?
by jcf666 @ 2024-07-14 23:01:44
我一运行直接给我干死循环了,在
by jcf666 @ 2024-07-14 23:15:51
AC代码:
#include <iostream>
using namespace std;
int n,a[2000],i,i2,i3=0,i4=0,s,bl=0;
int main()
{
cin>>n;
for(i=0;i<n*n;i++)
{
cin>>a[i];
i4++;
}
for(i=0;i<i4;i++)
{
for(i2=0;i2<a[i];i2++)
{
cout<<bl;
i3++;
if(i3==n)
{
cout<<endl;
i3=0;
}
}
if(bl==0)
bl=1;
else
bl=0;
}
return 0;
}
1.在
i+=a[i]
改为 i++
就能正常输入,且后面程序的运行就没有问题了,原输入里输入完后 i++
后就能解决这个问题3.由于题目中的
另外你的代码有点太长了,可以参考一下我的解法,希望对你有些帮助:
#include<bits/stdc++.h>
using namespace std;
int n,a[100001],k,flag=0,last=1;
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n;
while(cin>>k){
for(int i=last;i<=last+k;i++)a[i]=flag;
last+=k;
flag=!flag;
}
for(int i=1;i<=n*n;i++){
cout<<a[i];
if(i%n==0)cout<<"\n";
}
return 0;
}
by gat_Coding @ 2024-07-15 15:36:04
@jcf666 谢谢谢谢