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 条评论
登录 后参与评论

相关文章

来自专栏腾讯云实验室

TensorFlow API 简介

腾讯云提供了开发者实验室帮助用户学习 TensorFlow - 相关 API,教程内容如下,用户可以点击开发者实验室快速上机完成实验。

2797
来自专栏韦弦的微信小程序

Swift 旋转图像 - LeetCode

在计算机图像处理里,由于图片的本质是二维数组,所以也就变成了对数组的操作处理,翻转的本质就是某个位置上数移动到另一个位置上。

763
来自专栏算法channel

机器学习储备(7):numpy一维数组和矩阵

Numpy 是用 python封装的科学计算库,是一个精简版matlab 。 下面总结下在模拟脊回归的超参数:收缩率,与权重参数的关系时,用到的一些numpy运...

3828
来自专栏潇涧技术专栏

Problem: Longest Common Subsequence

最长公共子序列(LCS)是典型的动态规划问题,如果不理解动态规划请移步先看这篇动态规划的总结,否则本文中的代码实现会不理解的哟!

421
来自专栏谭正中的专栏

TensorFlow入门(3):使用神经网络拟合N元一次方程

现实中大部分情况是不能简单使用 N 元一次方程这样的公式表达的,神经网络的出现,给这类问题提供了一个很好的解决方法。本文继续给出一个简单的例子,使用 Tenso...

1.8K1
来自专栏潇涧技术专栏

Problem: Matrix Chain Problem

矩阵链乘问题是最典型的动态规划问题,本文介绍如何用动规算法解决这个问题,要理解下面的内容请先阅读这篇动态规划的总结。

411
来自专栏PHP技术

关于PHP浮点数精度损失问题

$f = 0.57; echo intval($f * 100); //56 结果可能有点出乎你的意外,PHP遵循IEEE 754双精度: 浮点数, 以64位...

2705
来自专栏编程

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

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

20910
来自专栏WeaponZhi

使用Octave来学习Machine Learning(二)

前言 上一篇我们介绍了 Octave 的一些基本情况,大家对 Octave 应该已经有了一个基本的了解,我相信看这篇文章的朋友已经在自己的电脑中安装好 Ocat...

3196
来自专栏蜉蝣禅修之道

优化后的Levensthein distance算法实现

2105

扫码关注云+社区