xtu oj 交叉点

文章目录

回顾

前言

偏移量的问题

代码

cpp 复制代码
#include<stdio.h>
#define N 40

char s[N][N];

int get_ans(int x,int y,int dx,int dy){//判断行,列,斜方向能不能构成连续的三个棋子,假设可以返回 1 
	int cnt=0;//x,y 表示给定的点的坐标,dx 和 dy 表示偏移量,cnt 表示连续的棋子的个数
	
	for(int i=-2;i<=2;i++){
		int hhh_x=x+i*dx;
		int hhh_y=y+i*dy;//表示更新之后的点的坐标
		
		if(s[hhh_x][hhh_y]=='*'){//假设是棋子
			cnt++;
			if(cnt>=3){
				return 1;
			}
		}else{
			cnt=0;//是空格就中断计数器,重新开始计数
		}
	}
	
	return 0;
}

int main(){
	int t;
	int qaq=1;//为了输出 case 进行到哪儿了
	scanf("%d",&t);
	while(t--){
		for(int i=0;i<N;i++){//把没用到的都初始化为空格
			for(int j=0;j<N;j++){
				s[i][j]='.';
			}
		}
		
		int n,m;
		scanf("%d%d",&n,&m);
		for(int i=2;i<n+2;i++){//输入的时候就防止下标越界
			scanf("%s",s[i]+2);
		}
		
	
		int num=0;//存交叉点的数目
		int x[N*N];
		int y[N*N];//注意所有点都可能是交叉点,极端情况是所有点都是棋子,n*m 个交叉点
		
		for(int i=2;i<n+2;i++){
			for(int j=2;j<m+2;j++){
				if(s[i][j]=='*'){
					int ans=0;//表示的是行,列,对角线,四个方向有几个方向满足条件,最开始是 0 ,表示没有方向
					//满足条件
					ans+=get_ans(i,j,0,1);//行
					ans+=get_ans(i,j,1,0);//列
					ans+=get_ans(i,j,1,1);//左上到右下
					ans+=get_ans(i,j,1,-1);//左下到右上
					
					if(ans>=2){//假设有两个方向满足条件,就表示该点是交叉点
						x[num]=i-2;
						y[num]=j-2;
						num++;
					}
				}
			}
		}
		
		//下面是输出
		printf("Case %d:%d\n",qaq,num);
		qaq++;
		
		for(int i=0;i<num;i++){
			printf("%d %d\n",x[i],y[i]);
		}
	}
	
	return 0;
}

思路

之前图方便,代码块之间都没有空行,还是空行好一些,能带来更好的阅读体验。感觉这种位置偏移量的题非常经典,这个模拟题也是非常经典。输入的时候,每次碰到这种二维数组我都非常害怕,刚刚搜了一下好像就用这种 %s 是最方便的,其他的输入方式挺麻烦。

相关推荐
.痞老板.7 小时前
java ee--计算机是如何工作的
java·开发语言·java-ee
奇树谦7 小时前
Qt Quick 图片加载与 GPU 纹理机制详解:QImage、QQuickTextureFactory、QSGTexture 与异步加载
开发语言·qt·系统架构
青梅味猪大肠7 小时前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
CoderYanger7 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)
java·数据库·spring·面试·职场和发展·java-ee·mybatis
程序员沉梦听雨7 小时前
【搜索引擎】Kibana使用指南
java·后端·学习笔记
starzy19908 小时前
深入理解Scala可变Map:动态构建场景下的性能与设计权衡
开发语言·scala
奶油话梅糖9 小时前
打开项目 0.9 秒、内存只有 IDEA 的 1/12:OpenIDEA 用 Rust 把 IntelliJ IDEA 重造了一遍
java·rust·github·intellij-idea
vipxieliang9 小时前
语言对比卡:PHP vs Go vs Java 的优缺点、适用场景与「为什么选 PHP」
java·go·php
Rain的Java大神之路9 小时前
公交App上“还有2站,约5分钟”怎么实现?90%的人答错这道大厂面试题:GPS漂移、ETA不准、10万QPS热点读全拆透(附完整代码)
java·后端·面试
golang学习记9 小时前
IDEA 2026.3 远程开发迎来重磅升级
java·ide·intellij-idea·远程开发