哪位大佬可以看看我有哪里有问题吗qwq
查看原帖
哪位大佬可以看看我有哪里有问题吗qwq
534655
LiuChip_ssy楼主2021/7/12 22:17

我:

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int n,a[1025][1025];
void shemian(int a,int r,int s)
{
	if (a == 2)
	{
		a[r][s] = 0;//第一个报错点
		return;
	}
	for (int i = r; i <= r + a; i++)
	{
		for (int j = s; j <= s + a; j++)
		{
			a[i][j]=0;//第二个报错点
		}
	}
	shemian(a / 2, r + a, s);
	shemian(a / 2, r, s + a);
	shemian(a / 2, r + a, s + a);
}
int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			a[i][j] = 1;
		}
	}
	shemian(pow(2,n),1,1);
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			cout << a[i][j] << ' ';
		}
		cout << endl;
	}
	return 0;
}

错误信息: WFdckQ.png 别人的代码:

#include<bits/stdc++.h>
using namespace std;
int n,p=1,a[1050][1050];
void di(int x,int l,int q) 
{
	if(x==2) 
	{
		a[l][q]=0;
		return;
	}
	for(int i=l; i<=l+x/2-1; i++)
		for(int j=q; j<=q+x/2-1; j++)
			a[i][j]=0; 
	di(x/2,l+x/2,q);
	di(x/2,l+x/2,q+x/2); 
	di(x/2,l,q+x/2); 
}
int main()
{
	cin>>n;
	for(int i=1; i<=n; i++)
		p*=2; 
	for(int i=1; i<=p; i++)
		for(int j=1; j<=p; j++)
			a[i][j]=1; 
	di(p,1,1); 
	for(int i=1; i<=p; i++)
	{
		for(int j=1; j<=p-1; j++)
			cout<<a[i][j]<<" ";
		cout<<a[i][p]<<endl; 
	}
	return 0;
}

于是乎大佬能告诉我写递归中的if部分那个地方有什么问题,怎么改吗?感激不尽!

2021/7/12 22:17
加载中...