站外题求助!只对了一个样例,很急在线等!
  • 板块灌水区
  • 楼主mia20130530
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/6/7 14:04
  • 上次更新2024/6/7 18:04:43
查看原帖
站外题求助!只对了一个样例,很急在线等!
1046601
mia20130530楼主2024/6/7 14:04

方向数组3

题目描述 问题同 “方向数组1”,区别在于本题需要模仿 “马走日” 的 8 个位置,输出顺序与位置如下图所示。 输入格式 第一行两个正整数

m 和 n,行号从上往下编号为 1 ∼ ∼

m,列号从左往右编号为 1 ∼ ∼

n。

第二行一个正整数 T,为要查询的位置数量。

接下来 T 行,每行两个数 (,) (i,j),为要查询位置的行号 i 与列号 j。

其中, 1≤1001≤m≤n≤100 。

输出格式 输出共 T 行,每行若干组数据,依次为 (i,j) 的上下左右八个位置,格式按 (x,y) 的形式输出(参见样例),中间没有任何空格。

注意:如果某个位置在矩阵之外(越界),则不输出。 样例输入 3 4 2 1 1 2 2 样例输出 #1 (2,3)(3,2) (1,4)(3,4) 样例输入 #2 10 10 1 5 5 样例输出 #2 (4,3)(3,4)(3,6)(4,7)(6,7)(7,6)(7,4)(6,3)

我的代码:

#include <bits/stdc++.h>
using namespace std;
int dx[17] = {-2, -2, -1, 1, 2, 2, 1, -1};
int dy[17] = {-1, 1, 2, 2, 1, -1, -2, -2};
int main()
{
 	int m,n,t,x,y;
	cin>>m>>n;
	cin>>t;
	while(t--)
	{
		cin>>x>>y;
		for(int i=0;i<8;i++)
		{
			int nx=x+dx[i];
			int ny=y+dy[i];
			if(nx>=1&&nx<=m&&ny>=1&&ny<=n)
			{
				printf("(%d,%d)",nx,ny);
			}
		}
			cout<<endl;
	}
	return 0;
}
2024/6/7 14:04
加载中...