admin管理员组

文章数量:1331970

match

链接:

  .php?id=3639


题目:

题目描述

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

输入

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

输出

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

样例输入

ANA
ANA
DAR
DAR
RAD
RAD

样例输出

DAR
ANA
RAD


思路:

  直接枚举每一种可能,暴力判断就可以。


实现:

#include <iostream>
#include <algorithm>
#include <set>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <stack>
#include <functional>
#include <sstream>
#include <iomanip>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <climits>
#include <cctype>
using namespace std;
vector<string> result;
int main() {
#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);
#endifios_base::sync_with_stdio(false);cin.tie(0);string a[10];for(int i=0;i<6;i++) cin>>a[i];string x;int book[6]={0,1,2,3,4,5};do{x=a[book[0]]+a[book[1]]+a[book[2]];if(x[0]!=a[book[3]][0]||x[3]!=a[book[3]][1]||x[6]!=a[book[3]][2])continue;if(x[1]!=a[book[4]][0]||x[4]!=a[book[4]][1]||x[7]!=a[book[4]][2])continue;if(x[2]!=a[book[5]][0]||x[5]!=a[book[5]][1]||x[8]!=a[book[5]][2])continue;result.push_back(x);}while(next_permutation(book,book+6));sort(result.begin(),result.end());if(result.empty()) {cout<<"0"<<endl;return 0;}for(int i=0;i<9;i++) {cout<<result[0][i];if((i+1)%3==0)cout<<endl;}
}

本文标签: match