图形周长(Image Perimeters)_搜索

2022-06-28 19:06:52 浏览数 (1)

本文最后更新于 1163 天前,其中的信息可能已经有所发展或是发生改变。

代码语言:javascript复制
#include<iostream> 
#include<cstring>
using namespace std;
//char ch1[20][20][2];
char ch[20][20][2];
void make(int i,int j,int k){
	cout<<"执行make"<<endl;
	ch[i][j][1]=k '0';
	cout<<"i "<<i<<" j "<<j<<" ch[i][j][0] "<<ch[i][j][0]<<" ch[i][j][1] "<<ch[i][j][1]<<endl;
	if(i-1>=0&&j-1>=0){
		if(ch[i-1][j-1][0]=='X'&&ch[i-1][j-1][1]=='0'){
			cout<<"执行make1"<<endl;
			make(i-1,j-1,k);
		}
	}
	if(i-1>=0){
		if(ch[i-1][j][0]=='X'&&ch[i-1][j][1]=='0'){
			cout<<"执行make2"<<endl;
			make(i-1,j,k);
		}
	}
	if(i-1>=0&&j 1<20){
		if(ch[i-1][j 1][0]=='X'&&ch[i-1][j 1][1]=='0'){
			cout<<"执行make3"<<endl;
			make(i-1,j 1,k);
		}
	}
	if(j-1>=0){
		if(ch[i][j-1][0]=='X'&&ch[i][j-1][1]=='0'){
			cout<<"执行make4"<<endl;
			make(i,j-1,k);
		}
	}
	if(j 1<20){
		if(ch[i][j 1][0]=='X'&&ch[i][j 1][1]=='0'){
			cout<<"执行make5"<<endl;
			make(i,j 1,k);
		}
	}
	if(i 1<20&&j-1>=0){
		if(ch[i 1][j-1][0]=='X'&&ch[i 1][j-1][1]=='0'){
			cout<<"执行make6"<<endl;
			make(i 1,j-1,k);
		}
	}
	if(i 1<20){
		if(ch[i 1][j][0]=='X'&&ch[i 1][j][1]=='0'){
			cout<<"执行make7"<<endl;
			make(i 1,j,k);
		}
	}
	if(i 1<20&&j 1<20){
		if(ch[i 1][j 1][0]=='X'&&ch[i 1][j 1][1]=='0'){
			cout<<"执行make8"<<endl;
			make(i 1,j 1,k);
		}
	}
	
	
}
void search(char ch[20][20][2],int m,int n){
	cout<<"执行search"<<endl;
	int k=1;
	for(int i=0;i<m;i  ){
		for(int j=0;j<n;j  ){
			if(ch[i][j][0]=='X'&&ch[i][j][1]=='0'){
				cout<<"执行make准备"<<endl;
				make(i,j,k);
				k  ;
				cout<<"执行make结束"<<endl;
			}				
		}
	}
}
void perimeters(int x,int y,int m,int n){
	char flag;
	int count=0;
	flag=ch[x-1][y-1][1];	
	for(int i=0;i<m;i  ){
		for(int j=0;j<n;j  ){
			if(ch[i][j][1]==flag){
				int temp=count;
				if(i-1>=0){
					if(ch[i-1][j][0]=='.'){
						count  ;
					}
				}
				else{
					count  ;
				}
				if(i 1<m){
					if(ch[i 1][j][0]=='.'){
						count  ;
					}
				}
				else{
					count  ;
				}
				if(j-1>=0){
					if(ch[i][j-1][0]=='.'){
						count  ;
					}
				}
				else{
					count  ;
				}
				if(j 1<n){
					if(ch[i][j 1][0]=='.'){
						count  ;
					}
				}
				else{
					count  ;
				}
				cout<<"i="<<i<<" j="<<j<<" temp="<<(count-temp)<<endl;
			}
		}		
	}
	cout<<"perimeters="<<count<<endl;
}
int main(){
	int m,n,x,y;	
	cout<<"mnxy"<<endl;
	cin>>m>>n>>x>>y;
	while(m!=0&&n!=0&&x!=0&&y!=0){
		memset(ch,'0',sizeof(ch));
		for(int i=0;i<m;i  ){
			char ch2[20];
			cin>>ch2;
			for(int j=0;j<n;j  ){
				ch[i][j][0]=ch2[j];
			}
		}
		for(int i=0;i<m;i  ){
			for(int j=0;j<n;j  ){
				cout<<ch[i][j][0];
			}
			cout<<endl;
		}
		cout<<endl;
		cout<<"执行search准备"<<endl;
		search(ch,m,n);
		cout<<"执行search结束"<<endl;
		for(int i=0;i<m;i  ){
			for(int j=0;j<n;j  ){
				cout<<ch[i][j][0];
			}
			cout<<endl;
		}
		cout<<endl;
		for(int i=0;i<m;i  ){
			for(int j=0;j<n;j  ){
				cout<<ch[i][j][1];
			}
			cout<<endl;
		}
		
		perimeters(x,y,m,n);
		
		cin>>m>>n>>x>>y;
	}
	return 0;
}

Post Views: 220

0 人点赞