1. 问题描述

      Alex喜欢填词游戏。填词游戏是一个非常简单的游戏。填词游戏包括一个N X M大小的矩形方格盘和P个单词。玩家需要把每个方格中填上一个字母使得每个单词都能在方格盘上被找到。每个单词都能被找到要满足下面的条件:

      每个方格都不能同时属于超过一个的单词。一个长为k的单词一定要占据k个方格。单词在方格盘中出现的方向只能是竖直的或者水平的(可以由竖直转向水平,反之亦然)。

      你得任务是首先在方格盘上找到所有的单词,当然在棋盘上有些方格可能没有被单词占据,然后把这些没有用的方格找出来,再把这些方格上的字母按照字典序组成一个“神秘单词”。

    2. 输入数据 
      输入的第一行包括3个整数N,M和P(2<= M,N<=10,0<=P<=100)。接下来的N行,每行包括M个字符,来表示方格盘。接下来的P行给出需要在方格盘中找到的单词。

    3. 输出要求 
      输入保证填词游戏至少有一组答案。输入中给出的字母都是大写字母。

    4. 输入样例 
      3 2 2 
      E B G 
      G E E 
      E G E 
      B E G 
      G E E

    5. 输出样例 
      E E G

    6. 解题思路 
      题目中给出的条件比较隐晦。输入中给出的字母都是大写字母——表明输出也是只有大写字母。输入保证填词游戏至少有一组答案——这说明不必寻找单词所在的位置只要去掉这些单词所占用的字母就可以了。“神秘单词”中的字母要按照单词字典序给出——说明只要知道“神秘单词”中的字母组成就可以了,在字母组成确定的情况下,按字典序输出的方式只有一种。分析到这里我们发现这其实是个很简单的问题:给出一个字母的集合,从中去掉一些在给出单词中出现过的字母,将剩下的字母按字典序输出即可。 
      可以定义一个有26个元素的数组,分别记录在输入的矩形中每个字母出现的次数,当读完单词时,将数组中对应到单词中的字母的元素减一。处理完所有的单词后,将数组中德非0的元素对应的字母一次输出,数组元素的值是几,就输出几次该字母。

    7. 代码:
    8. #include<iostream>
      #include<stdio.h>
      using namespace std;
      int max(int x,int y)
      { return x>y?x:y;
      }
      int main()
      {
      int N,M,P;
      int i,j;
      int Letter[];
      for(i=;i<;i++)
      {
      Letter[i]=;
      }
      for(i=;i<;i++)
      {
      cout<<Letter[i];
      }
      cin>>N>>M>>P;
      for(i=;i<N;i++)
      {
      char str[];
      cin>>str;
      for(j=;str[j]!='\0';j++)
      { Letter[str[j]-'A']++;
      printf("%c %d\n",str[j],Letter[str[j]-'A']);
      }
      } cout<<endl<<endl;
      for(j=;j<P;j++)
      {
      char str1[];
      cin>>str1;
      for(int k=;str1[k]!='\0';k++)
      {
      Letter[str1[k]-'A']--;
      printf("%c %d\n",str1[k],Letter[str1[k]-'A']);
      }
      }
      cout<<endl;
      for(i=;i<;i++)
      {
      if(Letter[i]!='\0')
      for(j=;j<Letter[i];j++)
      {
      printf("%c",i+'A');
      }
      }
      cout<<endl;
      return ;
      }
      /*
      3 3 2
      EBG
      GEE
      EGE
      BEG
      GEE
      */

      实际上M拿来没什么nuan用!没有去控制单词长度,可以去掉!

例题:填词-poj的更多相关文章

  1. POJ中和质数相关的三个例题(POJ 2262、POJ 2739、POJ 3006)

    质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数:否则称为合数.      最小的质数 ...

  2. 图的全局最小割的Stoer-Wagner算法及例题

    Stoer-Wagner算法基本思想:如果能求出图中某两个顶点之间的最小割,更新答案后合并这两个顶点继续求最小割,到最后就得到答案. 算法步骤: --------------------------- ...

  3. 判断两条直线的位置关系 POJ 1269 Intersecting Lines

    两条直线可能有三种关系:1.共线     2.平行(不包括共线)    3.相交. 那给定两条直线怎么判断他们的位置关系呢.还是用到向量的叉积 例题:POJ 1269 题意:这道题是给定四个点p1, ...

  4. POJ 2823 滑动窗口 单调队列模板

    我们从最简单的问题开始: 给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k. 要求: f(i) = max{a(i-k+1),a(i-k+2),..., a(i)},i = 0 ...

  5. Tarjan应用:求割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)【转】【修改】

    一.基本概念: 1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点. 2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成 ...

  6. (转)Tarjan应用:求割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)

    基本概念: 1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点. 2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个 ...

  7. 转自 Because of you 的总结

    上下界网络流的问题严格的分,可以分为四类吧. 1:无源汇可行流  sgu 194 2:有源汇可行流  poj 2396  这题比较好,我建图建了将近200行 3:有源汇最大流  zoj 3496  这 ...

  8. 【转】大素数判断和素因子分解【miller-rabin和Pollard_rho算法】

    集训队有人提到这个算法,就学习一下,如果用到可以直接贴模板,例题:POJ 1811 转自:http://www.cnblogs.com/kuangbin/archive/2012/08/19/2646 ...

  9. 论深度优先(DFS)和广度优先搜索(BF)的优点及不足(更新ing)

    例题: POJ 1915 Knight Moves 骑士遍历问题(跳马问题) 在一个m*m的棋盘上,从任意一个给定的位置(sx , sy)出发,为象棋中的马找一条路通过最少的步数到达另一位置(ex , ...

随机推荐

  1. JavaScript注释之HTML注释(<!-- & //-->)

    JavaScript中支持HTML注释 //用法 <script language="javascript"> <!-- alert("我是注释内的JS ...

  2. 关于keyTyped

    蠢了,重写keyTyped方法时候拿keyCode去做比较....记一下....VK_UNDEFiEND.......

  3. Windows下Mysql5.7开启binlog步骤及注意事项

    1.查看是否开启了binlog:show binary logs; 默认情况下是不开启的. 2.开启binlog:修改mysql的配置文件my.ini.添加如下配置: 该文件默认不允许修改,需要右键“ ...

  4. 脱壳第二讲,手动脱壳PECompact 2.x

    脱壳第二讲,手动脱壳PECompact 2.x PS: 此博客涉及到PE格式.所以观看此博客你要熟悉PE格式 首先,逆向inc2l这个工具,汇编中可能会用的 inc头文件转换为lib的工具 但是他有壳 ...

  5. Integrates Git with Sublime 3 to pull or push to Github by using Sublime plugin Git

    1. Git must be installed, Sublime plugin "Git" only connects Sublime with Git. Download UR ...

  6. onclick事件触发 input type=“file” 上传文件

    添加按钮: <input type="button" name="button" value="浏览" onclick="j ...

  7. json_encode()中文不转码

    php使用json_encode()把数组转换为json的时候,总会把中文进行转码,转码后从json数据上我们无法看出其中的中文文字.php5.4以后,当json_encode()的第二个参数赋值为J ...

  8. Visual Studio 调试技巧[Command Window & Immediate Window ](Tips)

    Visual Studio 调试技巧[Command Window & Immediate Window ](Tips) 1. immediate window 定义的一些 alias (// ...

  9. 【Spring】渲染Web视图

    前言 前面学习了编写Web请求的控制器,创建简单的视图,本篇博文讲解控制器完成请求到结果渲染到用户的浏览器的过程. 渲染Web视图 理解视图解析 前面所编写的控制器方法都没有直接产生浏览器中渲染所需要 ...

  10. html-webpack-plugin的使用

    使用前第一步:npm install 安装html-webpack-plugin --save--dev || --save  (tips:--save--dev跟--save最大的区别就是--dev ...