`
jackchen0227
  • 浏览: 146465 次
  • 性别: Icon_minigender_1
  • 来自: 帝都
社区版块
存档分类
最新评论

joj 1014 the matrix 从八个方向遍历访问矩阵

    博客分类:
  • ACM
阅读更多

 

 1014: The Matrix


Result TIME Limit MEMORY Limit Run Times AC Times JUDGE
3s 8192K 2109 670 Standard

Given a matrix of characters, and a list of words, output whether or not each word is present in the matrix. Words may appear forwards and backwards. They may appear horizontally, vertically, and diagonally.

Input


The matrix, followed by a list of words. Only lower case characters will be used. Each matrix will be square, and contain no more than 20 characters on a side. The string XXX denotes the end of input.

Output


For each word, report whether or not it is present in the matrix. If it is present, output should read “<word> is in the matrix.” If it is not present, output should read “<word> is not in the matrix.”, where <word> is the word in question.

Sample Input

applexy
pxlhjke
edeqgfl
xocgvpl
gghnmnn
tahuupu
qdgbywb
apple
axe
apex
cat
car
hat
computer
gum
XXX

Sample Output

apple is in the matrix.
axe is in the matrix.
apex is in the matrix.
cat is not in the matrix.
car is not in the matrix.
hat is in the matrix.
computer is not in the matrix.
gum is in the matrix.

 

/*
	水题一个
	关键是找字符的时候
	沿着八个方向找
	但是每一次只能沿着一个方向遍历下去
*/
#include <stdio.h>
#include <string.h>
char matrix[21][21];
char str[21];
bool isIn(int row,int col)
{
	char tmp[21];
	memset(tmp,'\0',sizeof(tmp));
	tmp[0] = str[0];
	int var[2][8] = {{0,0,-1,1,1,-1,1,-1},
					{1,-1,0,0,-1,1,1,-1}};
	int curRow = 0,curCol = 0;
	for(int i=0;i<8;i++) //一共有八个方向
	{
		curRow = row;
		curCol = col;
		for(int j=1;j<strlen(str);j++) //一次只能沿着一个方向找
		{
			curRow += var[0][i];
			curCol += var[1][i];
			tmp[j] = matrix[curRow][curCol];
		}
		if(strcmp(tmp,str) == 0)
			return true;
	}
	return false;
}
int main()
{
	memset(matrix,'\0',sizeof(matrix));
	freopen("in.txt","r",stdin);
	scanf("%s",matrix[0]);
	for(int k=1;k<strlen(matrix[0]);k++)
		scanf("%s",matrix[k]);
	while(scanf("%s",str),strcmp(str,"XXX"))
	{
		bool flag = false;
		for(int i=0;i<strlen(matrix[0]);i++)
		{
			for(int j=0;j<strlen(matrix[0]);j++)
				if(matrix[i][j] == str[0])
					if(isIn(i,j))
					{
						flag = true;
						break;
					}
			if(flag)
				break;
		}
		if(flag)
			printf("%s is in the matrix.\n",str);
		else
			printf("%s is not in the matrix.\n",str);
	}
	fclose(stdin);
	return 0;
}
分享到:
评论

相关推荐

    joj 部分题目答案 自己做的 仅供参考

    joj 部分题目答案 自己做的 仅供参考 joj 部分题目答案 自己做的 仅供参考 joj 部分题目答案 自己做的 仅供参考 joj 部分题目答案 自己做的 仅供参考 joj 部分题目答案 自己做的 仅供参考

    joj上做的一些ACM试题

    【标题】:“JOJ上做的一些ACM试题” 在计算机科学领域,ACM(Association for Computing Machinery)国际大学生程序设计竞赛是一项备受瞩目的比赛,旨在提升大学生的算法设计、问题解决以及团队协作能力。JOJ...

    joj acm 部分习题解答

    【标题】"joj acm 部分习题解答"揭示了这是一份与JOJ(Judge Online Job)和ACM(国际大学生程序设计竞赛)相关的资源,主要是作者对于某些题目的解题思路和代码实现。JOJ是用于在线评测编程竞赛题目的一种平台,而...

    JOJ-jilin-university--acm.rar_joj

    【标题】"JOJ-jilin-university--acm.rar_joj" 提供的是吉林大学JOJ在线判题系统的编程竞赛代码集,主要用于帮助初学者入门。 【描述】中的信息表明,这个压缩包内的代码样例是专门为在JOJ平台上进行编程训练的学生...

    acm.rar_acm jlu 10_acm jlu 1029_joj 1237_joj10

    如果是一个文件夹,里面可能包含了多个源文件,每个对应一个不同的ACM或JOJ题目。如果是单一的源代码文件,那么它可能解决了JOJ平台上的1237号问题或者与"acm"相关的某个特定问题。 总结这些知识点,我们可以得出...

    joj.rar_joj

    先进先出(First In First Out,简称FIFO)页面置换算法是一种简单的页面置换策略,它的基本思想是:当需要淘汰一个页面时,选择最早进入内存的页面进行淘汰。这是因为假设最旧的页面不再被频繁使用,因此淘汰它可能...

    joj 1424 硬币兑换问题

    标题“joj 1424 硬币兑换问题”描述的是一个经典的计算机编程问题,它涉及到使用动态规划(Dynamic Programming, DP)方法来解决硬币找零问题。在这个问题中,我们要找到使用最少数量的硬币来凑成特定金额的方式。...

    Joj - Java Version of Java-开源

    2. **对象模型**:Joj 提供了一个强大的对象模型,允许开发者通过对象属性和方法访问和修改 Java 代码的各个部分。例如,可以通过 Class 对象获取其所有的方法和字段,或者通过 Method 对象修改其参数列表。 3. **...

    JoJ-crx插件

    Etre au courant quand JoJ est en live,策划人semaine et liens vers lesréséauxauxsocioaux Soyez au courant纠结JoJ开始à流光! 现场直播将继续进行。 约翰·奎因·伊斯特·布鲁和克林·德集团的非官方网站 D...

    一个有关调度的问题joj1015

    这个题其实现在想起来也不知道是怎么就给ac的。

    吉林大学 joj 1000-2645题代码

    吉林大学 joj 1000-2645题代码,嘿嘿,大家就不用在花JPOINT买代码了,祝ACMer实现自己的心愿

    吉林大学ACM题集.pdf-JOJ

    目前至少包含了16卷(从Volume01到Volume16),编号从1000开始,到2599结束。 - **问题来源**:题目来自多个来源,包括但不限于: - 过去的区域赛或世界总决赛题目。 - 吉林大学及其他在线裁判系统的选拔赛题目...

    acm joj 1600

    根据给定的信息,本文将详细解释“acm joj 1600”中的两种大数取模运算方法。此问题主要关注如何高效地计算形如 \(a^b \mod m\) 的表达式,这对于处理大数据或进行密码学运算非常重要。 ### 大数取模运算 #### ...

    JoJo-s-Bizarre-Survival:一个模组,将JoJo的奇异冒险中的看台添加到Minecraft

    这个mod的目的是要从专营权中尽可能多地增加Minecraft,该mod目前仅包含Stand能力,其他能力(Hamon,Vampirism)将在以后的更新中添加。 如果您不将行为视为不同的立场(如果您这样做的话,则为31个),该模块中...

    安全文明施工管理目标【精选文档】.doc

    【安全文明施工管理目标】是建筑工程施工中的核心要素,它涵盖了多个方面,旨在保障施工过程的安全,提升工程质量,以及维护良好的工作环境。以下是对这些目标的详细解释: 1. **指导思想**:以“科学管理、质量第...

    furystudios

    furystudios 普尔维·扎达塔克(Prvi zadatak) ...DroppingOff - radnikhodajućidolazi做pripadajuće科萨雷(izvedeno kroz provjeru tagova kutije)我卡达joj JE dovoljno blizu,fizičkiJE lan

    ControlEstoque_GH:..

    Este Projeto签证是由estoque进行的,它是由mer mercadorias uma determinada empresa sejam averiguadas和atualizadas ... 2021年1月20日,由JoséCláudiodeAraújoJúnior和Annielly Ferreira de Sousa所设计。

    大智慧最新安装

    大智慧最新安装包,老的已经过期不能查询个人自选股,所以推荐最新的大智慧给大家安装

Global site tag (gtag.js) - Google Analytics