37分,求大佬帮忙
查看原帖
37分,求大佬帮忙
762650
Ennis_Zhang_is_happy楼主2023/3/26 19:56
#include<iostream>
using namespace std;
char c[1005][1005];
int r,c1;
int x1,y1;
int cnt;
int vis[1005][1005];
int dx[3] = {0,1,0};
int dy[3] = {0,0,1};
int flag;
void dfs(int x,int y){
	if(x1 == 0,y1 == 0){
		x1 = x;
		y1 = y;
	}
	if(c[x + dx[1]][y + dy[1]] != '.' && x + dx[1] <= r && y + dy[1] <= c1){
		dfs(x + dx[1],y + dy[1]);
	}else if(c[x + dx[2]][y + dy[2]] != '.' && x + dx[2] <= r && y + dy[2] <= c1){
		dfs(x + dx[2],y + dy[2]);
	}else{
		for(int k = x1; k <= x; k++){
			for(int j = y1; j <= y; j++){
			    if(flag == false && c[k][j] == '.'){
			    	cout<<cnt<<' '<<endl;
			    	cout<<"Bad placement.";
			    	flag = true;
			    	return;
				}else if(c[k][j] == '.'){
					return;
				}
			}
		}
		cout<<x1<<' '<<y1<<' '<<x<<' '<<y<<endl;
		cnt++;
		return;
	}
}
int main(){
	cin>>r>>c1;
	for(int i = 1; i <= r; i++){
		for(int j = 1; j <= c1; j++){
			cin>>c[i][j];
		}
	}
	for(int l = 1; l <= r; l++){
		for(int o = 1; o <= c1; o++){
			if(c[l][o] == '.'){
				break;
			}
			dfs(l,o);
			if(flag == true){
				return 0;
			}
		}
	}
	if(flag == false){
		cout<<"There are "<<cnt<<" ships.\n";
	}
	return 0;
}

测试结果

宣传我的博客,虽然里面啥也没有

2023/3/26 19:56
加载中...