递归——分治法(输出十字架)

在这里插入图片描述

思路:
以图形中点为中心点,分成4个area
每个area里面进行fun函数操作,找到中心点,赋+
每个area的开始位置和结束位置决定了这个area
在这里插入图片描述

#include<stdio.h>
#include<string.h> 
int array[65][65];
int n;
void fun(int ksh,int ksl,int jsh,int jsl)
{
    
    
	if(ksh>jsh||ksl>jsl) return; 
	int midh=(ksh+jsh)/2;
	int midl=(ksl+jsl)/2;
	
	array[midh][midl]=1;
	
	fun(ksh,ksl,midh-1,midl-1);		//area1
	fun(ksh,midl+1,midh-1,jsl);		//area2
	fun(midh+1,ksl,jsh,midl-1);		//area3
	fun(midh+1,midl+1,jsh,jsl);		//area4

}

int main()
{
    
    
	int i,j;
	scanf("%d",&n);
//	for(j=1;j<=n;j++)	
//		for(i=1;i<=n;i++)
//		array[j][i]=0;        //a[][]置零 
//	
	fun(1,1,n,n);
	for(i=1;i<=n;i++)
	{
    
    
		for(j=1;j<=n;j++)
		{
    
    
			if(array[i][j]==1)
			printf("+");
			else if(array[i][j]==0)
			printf("0");	
		}
		printf("\n");
		}	
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_51333166/article/details/114240066