程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Codeforces Round #234A,

Codeforces Round #234A,

編輯:C++入門知識

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 }
C++ Code

 

 

    測試結果:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved