2017.1.16【初中部 】普及组模拟赛C组 match 题解

编程入门 行业动态 更新时间:2024-10-16 20:21:05

2017.1.16【初中部 】普及组模拟赛C组 match <a href=https://www.elefans.com/category/jswz/34/1769599.html style=题解"/>

2017.1.16【初中部 】普及组模拟赛C组 match 题解

原题:

http://172.16.0.132/junior/#contest/show/1366/1

题目描述:

小x在解说F7决赛时的搭档是韩乔生,以至于小x没有任何能说上话的机会。无聊的他玩起了填字游戏。一个3*3的九宫格里,每个格子里都被填上了一个字母,从而我们得到了6个单词。现在,小x随手写了6个单词,他想让你帮他找到一种填字母的方案,使得这6个单词都出现在了九宫格里。

输入:

共六行,每行一个长度为3的单词(全部大写)。

输出:

如果找不到方案,输出“0”(不包含引号)
如果能找到,输出包含3行,第i行对应九宫格的第i行(最后一行行末要换行)。
如果有多种方案,请输出每种方案对应的字符串中字典序最前的一种(将行与行首尾相连,就可以得到一个字符串)。

样例输入:

样例输入1:
ANA
ANA
DAR
DAR
RAD
RAD

样例输入2:
EVO
HEP
HIR
IVA
PAD
ROD

样例输入3:
AKO
CES
DOC
DON
ESI
KES

样例输出:

样例输出1:
DAR
ANA
RAD

样例输出2:
HEP
IVA
ROD

样例输出3:
0

数据范围限制:

如果找不到方案,输出“0”(不包含引号)

分析:

这道题目我们可以爆搜,当然不能每个位置搜,这样会爆,所以我们可以分层搜;
先将单词从小到大排序(题目要求要满足字典最小序),然后x表示当前搜到第x层,当x>3时,我们判断对于每一列是否存在这样一个单词(因为我们是按层来搜的,所以不用担心每一行的单词不存在)

实现:

vars,ans:array[0..1000]of string;w:string;i,j,t:longint;bz,r:array[0..1000]of boolean;b:boolean;
function check:boolean;
beginr:=bz;for i:=1 to 3 dobeginw:='';b:=false;for j:=1 to 3 do w:=w+ans[j,i];for j:=1 to 6 doif (w=s[j])and(r[j]) thenbeginb:=true;r[j]:=false;break;end;if b=false then exit(false);end;exit(true);
end;
procedure dg(x:longint);
vari,t:longint;
beginif x>3 thenbeginif check thenbeginfor t:=1 to 3 do writeln(ans[t]);halt;end;exit;end;for i:=1 to 6 doif bz[i] thenbeginbz[i]:=false;ans[x]:=s[i];dg(x+1);bz[i]:=true;ans[x]:='';end;
end;
procedure qsort(x,y:longint);
vari,j:longint;mid:string;
begini:=x;j:=y;mid:=s[x];repeatwhile s[j]>mid do dec(j);while s[i]<mid do inc(i);if i<=j thenbegins[0]:=s[i];s[i]:=s[j];s[j]:=s[0];inc(i);dec(j); end;until i>j;if x<j then qsort(x,j);if i<y then qsort(i,y); 
end;
beginassign(input,'match.in');reset(input);assign(output,'match.out');rewrite(output);fillchar(bz,sizeof(bz),true);for i:=1 to 6 do readln(s[i]);qsort(1,6);dg(1);writeln(0);close(input);close(output);
end.

更多推荐

2017.1.16【初中部 】普及组模拟赛C组 match 题解

本文发布于:2024-02-05 09:28:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1674117.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:题解   初中部   match

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!