首页 > 其他分享 >UVA-422 题解

UVA-422 题解

时间:2022-11-23 21:13:17浏览次数:78  
标签:字符 x1 int 题解 查找 数组 y1 UVA 422

正文

最坏时间复杂度:\(\mathcal{O}(l^3)\)

由于 \(1\leq l\leq 100\),\(\mathcal{O}(l^3)\) 可以过。

输入字符阵,枚举 \(i,j\) 指向二维数组中的字符,向八个方向暴力搜索。

可以定义一个方向数组,再定义一个查找函数,这样可以减少码量,方便阅读。

还有一句:特别注意UVA的格式!输出查找结果不要带空格,每个输出后都必须有一个换行!!

代码(附注释):

#include<iostream>
#include<string>
#define r first
#define o second
using namespace std;
pair<int,int> d[8]{
	{1,1},{1,-1},{-1,-1},{-1,1},
	{1,0},{-1,0},{0,1},{0,-1}
};//方向数组
char c[105][105];//字符数组
int a,b;//用来在f函数中传递字符串末端查找位置
int n;
string s;
bool f(int x,int y,string s){
	if(c[x][y]!=s[0])	return false;//如果第一个字符不匹配,那绝对查找失败
	s.erase(s.begin());//删除头字符,便于后续for范围循环
	for(auto i: d){
		int x1=x,y1=y;
		for(char k: s){
			x1+=i.r,y1+=i.o;//移动查找位置
			if(x1>n||x1<1||y1>n||y1<1)	goto loop;
			if(c[x1][y1]!=k)	goto loop;//如果这个方向匹配失败,跳出循环至loop
		}
		a=x1,b=y1;//如果匹配到,传导末端查找位置
		return true;//匹配成功
		loop: ;//goto大法好
	}
	return false;//若没有匹配的,那最终匹配失败
}
int main(){
	cin>>n;
	bool flag=true;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			cin>>c[i][j];//输入字符数组
	while(cin>>s&&s!="0"){
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				if(f(i,j,s)){
					cout<<i<<","<<j<<" "<<a<<","<<b<<"\n";//特别注意UVA的格式!
					if(flag)	flag=false;
					goto down;//goto大法好
				}
		cout<<"Not found\n";
		down: ;
	}
}

洛谷提交记录

后附

日志

v1.0 on 2022.11.23: 发布

标签:字符,x1,int,题解,查找,数组,y1,UVA,422
From: https://www.cnblogs.com/wanguan/p/16919805.html

相关文章

  • 题解 LGP4211【[LNOI2014]LCA】
    problem一棵树,多次给定\(l,r,z\)询问\(\sum_{l\leqi\leqr}dep_{lca(i,z)}\),允许离线,\(n\leq50000\)。solution转换:这个\(dep_u\)的定义为\(u\)到根节点的点数......
  • ABap smartforms 预览重叠问题解决
     smartfoms在预览时总会出现文字重叠的现象,但是实际打印却又正常。如下图。 通过对sap源码的修改可以修正此问题。如下显示就正常了。......
  • P4464 [国家集训队] JZPKIL 题解
    NOIP前三天,感觉绝对复习不完了的gtm1514认为已经没有什么好害怕的了,于是做起了数学题。因为摆了大烂所以只有一道。P4464[国家集训队]JZPKIL题意不再赘述。下午看......
  • CF1392H ZS Shuffles Cards 题解
    linkDescription有\(n\)张数字牌以及\(m\)张鬼牌,有一个不可重集合\(S\),初始为空。不断执行以下操作:抽出一张牌,如果为数字牌,则加入\(S\)并移除。如果为鬼牌,如果......
  • Public NOIP Round #3(Div. 1) 题解
    T2:先判\(1,n\)有连边的情况,也就是说明最短路一定是\(1\)直接走到\(n\)。特判掉\(k=1,n=2\)的情况,这是无解的。那么如果\(k\ge2\)就令\(1,n\)都为\(U\),其余随......
  • Codeforces Round #835 (Div. 4) A-G完全题解
    比赛链接A、点击查看代码#include<bits/stdc++.h>usingnamespacestd;intmain(){intT;cin>>T;while(T--){vector<int>G;for(inti=1;......
  • 【MSSQL】SQL SERVER导入中文乱码问题解决
    公司最近承接了一个项目,甲方现使用旧版SiteServer框架(以下简称“SiteCMS”)作为门户网站,使用的数据源是SQLServer。现在需要对SiteCMS进行升级,在升级时数据库和数据库结构也......
  • 题解 LGP7888【「MCOI-06」Distinct Subsequences】
    problem给定一个由小写字符构成的字符串\(S\)。令一个字符串的价值为该串的本质不同非空子序列个数,其中子序列可以为整体。求\(S\)所有子序列的价值和。答案对\(10^......
  • Codeforces Round #790 (Div.4) A-H2题解
    原题链接:https://codeforces.com/contest/1676A.Lucky?题意:给定长度为6由数字组成的字符串问前三个数字的和是否等后三个数字的和。题解:直接相加比较即可。#include<......
  • 题解 LGP2607【[ZJOI2008] 骑士】
    problem基环树森林带权最大独立集。\(n\leq10^6\)。solution0这里先解释一下基环树森林,它就是一个\(n\)个点\(n\)条边的森林,同时是一个荒漠。我们拿出其中一棵连......