⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 剧场.cpp

📁 初学者的源c代码
💻 CPP
字号:
/*
2.	设一个剧场有N*N个座位,顾客买票时可以提出任意有效的座号请求。下面
用二维数组a[N][N]模拟剧场中的座位,a[i][j]等于0表示第i排第j列(0≤I , 
j≤N-1)的票尚未售出。
  函数int Find ( int a[][N] , int R , int *row , int *col )的功能是:
在部分票已售出的情况下,找出剧场中的R*R个空座位,要求这些座位的排列形
成一个正方形。若找到满足要求的一个座位排列,则函数返回1,并算出该正方
形左上角的行、列号;若未找到,返回0;
*/
#include <iostream>
#include <stdlib.h>
using namespace std;

#define N 20
int Find ( int a[][N] , int R , int *row , int *col);
int ifok(int a[][N],int R,int i,int j);
void main()
{
	int a[N][N];
	int i,j,R,row=0,col=0;

	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		{
			a[i][j]=rand()%2;
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	cout<<"请输入你想要的位子数(R*R)  R=";
	cin>>R;
	if(R<0||R>20)
	{
		cout<<"R越界"<<endl;
		return;
	}
	if(Find(a,R,&row,&col))
	{
		cout<<"Have find! set is a["<<row<<"]["<<col<<"]"<<endl;
	}
	else
	{
		cout<<"haven't find"<<endl;
	}
}
int Find( int a[][N] , int R , int *row , int *col)
{
	int i=0,j=0;
	
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		{
			if(a[i][j]==0)
			{
				if(ifok(a,R,i,j))
				{
					*row=i;
					*col=j;
					return 1;
				}
				else
					continue;
			}
		}
	}
	if(i==N)
		return 0;
}
int ifok(int a[][N],int R,int i,int j)
{
	int tmpi=i;
	int tmpj=j;
	for(i=tmpi;i<tmpi+R;i++)
	{
		for(j=tmpj;j<tmpj+R;j++)
		{
			if(a[i][j]!=0)
				return 0;
		}
	}
	if(i==tmpi+R)
		return 1;
}
					

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -