Codeforces Round #234A

Inna and choose option

    题意:

一个由12个字符('O'或'X')组成的字符串,这12个字符可以排列成a*b(a*b=12)的矩阵,要求矩阵某一列都是'X'。用户输入t个字符串,都是由12个'O'或'X组成,设计函数可求解符合要求矩阵的个数,并且将符合要求的矩阵大小输出。

Input:

第一行输入一个整数t(Range:1-100),t表示要输入的测试数据的个数,下面每一行输入都是一组数据被录入。

Output:

将每组数据的结果放在一行输出,format:n axb axb axb ….

n表示满足要求的矩阵个数,后面是具体的矩阵大小。

    例如:

解题思路:

    可以看出矩阵个数最大为6,分别是(1,12)(2,6)(3,4)(4,3)(6,2)(12,1),将这些情况枚举出来,然后for循环判断矩阵的每一列,若有一列满足条件(全为'X'),那么将这个矩阵行数列数分别保存到一个6行2列的数组的第一行,k来计数,最后k中存的就是满足条件的矩阵个数,数组里面前k行存的就是具体大小。

    代码:

 1 #include <iostream>
 2 using namespace std;
 3 #include <string>
 4 #define MAX 100
 5 
 6 
 7 int main(void)
 8 {
 9     string s[MAX];
10     int t;
11     void inna(string card);
12     cin >> t;
13     for(int i=0;i<t;i++)
14     {
15         cin >> s[i];
16     }
17 
18     for(int i=0;i<t;i++)
19     {
20         inna(s[i]);
21     }
22     return 0;
23  } 
24 
25 void inna(string card)
26 {
27     int i,j,k=0,m;
28     bool flag = true;
29     int a[6] = {1,2,3,4,6,12};       // 行数有六中情况
30     int b[6] = {12,6,4,3,2,1};       // 列数 
31     int n[6][2];
32     
33     if(card == "OOOOOOOOOOOO")         // 12张卡片全为o 
34     {
35         cout << k << endl;
36         return;                      // 结束函数体 
37     }
38     
39     for(i=0;i<6;i++)                 // i表示行数 
40     {
41         for(j=0;j<b[i];j++)
42         {
43             flag = true;
44             for(m=0;m<a[i];m++)
45             {
46                 if(card[j+m*b[i]]!='X')
47                 {
48                     flag = false;
49                     break;
50                 }
51             }
52 
53             if(flag)
54             {
55                 n[k][0] = a[i];
56                 n[k][1] = b[i];
57                 k++;
58                 break;
59             }
60          }
61      }
62      
63      cout << k << ' ';
64      for(i=0;i<k;i++)
65      {
66          cout << n[i][0] << 'x' << n[i][1] << ' ';
67      }
68      cout << endl;
69 }

    测试结果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

拉格朗日插值

存在性和唯一性的证明以后再补。。。。 拉格朗日插值 拉格朗日插值,emmmm,名字挺高端的:joy: 它有什么应用呢? 我们在FFT中讲到过 设n-1次多项式为...

2747
来自专栏数据结构与算法

洛谷P1887 乘积最大3

题目描述 请你找出M个和为N的正整数,他们的乘积要尽可能的大。 输出字典序最小的一种方案。 输入输出格式 输入格式: 一行,两个正整数N,M 输出格式: M个...

3348
来自专栏CreateAMind

keras doc 7 Pooling Connceted Recurrent Embedding Activation

‘th’模式下,为形如(samples,channels, rows,cols)的4D张量

1053
来自专栏10km的专栏

faster rcnn:assert (boxes[:, 2] >= boxes[:, 0]).all()分析塈VOC2007 xml坐标定义理解

在进行faster rcnn训练的时候,报了一个断言错误 File “/py-faster-rcnn/tools/../lib/datasets/imdb.p...

3265
来自专栏编程

扣丁学堂浅谈Python视频教程之random模块详解

今天扣丁学堂小编给大家详细介绍一下关于Python视频教程之random模块详解,,首先用于生成伪随机数之所以称之为伪随机数,是因为真正意义上的随机数(或者随机...

22110
来自专栏数值分析与有限元编程

一维变带宽存储刚度矩阵

我们知道,集成之后的整体刚度矩阵是一个对称的稀疏带状矩阵,如图1所示。这样的矩阵包含大量的0元素,占用大量的存储空间。为了节约存储空间,可采取一些方法对刚度矩阵...

3886
来自专栏C语言及其他语言

【每日一题】

笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:...

1032
来自专栏专注研发

poj-3185-开关问题

牛一行20他们喝的水碗。碗可以那么(面向正确的为清凉水)或颠倒的(一个位置而没有水)。他们希望所有20个水碗那么,因此用宽鼻子翻碗。

933
来自专栏来自地球男人的部落格

浅谈Attention-based Model【源码篇】

源码不可能每一条都详尽解释,主要在一些关键步骤上加了一些注释和少许个人理解,如有不足之处,请予指正。 计划分为三个部分: 浅谈Attention-bas...

27910
来自专栏Hongten

根据星星的层数输出星星(*)_java版

=============================================================

1891

扫码关注云+社区