結果

問題 No.233 めぐるはめぐる (3)
ユーザー syoken_desukasyoken_desuka
提出日時 2015-06-30 01:07:35
言語 C++11
(gcc 11.4.0)
結果
WA  
実行時間 -
コード長 2,615 bytes
コンパイル時間 874 ms
コンパイル使用メモリ 89,376 KB
実行使用メモリ 7,504 KB
最終ジャッジ日時 2024-07-07 21:22:06
合計ジャッジ時間 6,280 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 WA -
testcase_01 WA -
testcase_02 WA -
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function ‘bool f(int)’:
main.cpp:78:27: warning: converting to non-pointer type ‘char’ from NULL [-Wconversion-null]
   78 |             tmp[length] = NULL;
      |                           ^~~~
main.cpp:91:27: warning: converting to non-pointer type ‘char’ from NULL [-Wconversion-null]
   91 |             tmp[length] = NULL;
      |                           ^~~~
main.cpp: In function ‘int main()’:
main.cpp:105:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
  105 |     boin[5]='u';
      |     ~~~~~~~^~~~
main.cpp:28:6: note: at offset 5 into destination object ‘boin’ of size 5
   28 | char boin[5];
      |      ^~~~

ソースコード

diff #

#include <algorithm>
#include <array>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include<complex>
#include <cmath>
#include <iostream>
#include <fstream>
#include <queue>
#include <list>
#include <map>
#include <numeric>
#include <set>
#include <sstream>
#include <string>
#include <vector>
#include <string>
using namespace std;
#define REP(i,a,n) for(int i=(a); i<(int)(n); i++)
#define rep(i,n) REP(i,0,n)
//#define FOR(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it)
#define ALLOF(c) (c).begin(), (c).end()
typedef long long ll;

static bool usedSiin[6];
static bool usedBoin[5];
char boin[5];
char siin[6];
char tmp[11];

vector<string> listm;

bool f(int length)
{        
    if (length == 11)
    {
        bool isSinBefore = false;
        for (int i = 0; i < 11; i++)
        {
            if (   tmp[i] == 'n' 
                || tmp[i] == 'b'
                || tmp[i] == 'm'
                || tmp[i] == 'g'
                || tmp[i] == 'r')
            {
                if (isSinBefore)
                {
                    return false;
                }
                else
                {
                    isSinBefore = true;
                }
            }
            else
                isSinBefore = false;
        }
        string comparer(tmp);
        for (int i = 0; i < listm.size(); i++)
        {
            if ( comparer.compare(listm[i]) != 0)
            {
                return false;
            }
        }
        return true;
    }
    //next node search
    for (int i = 0; i < 6; i++) // boin
    {
        if (!usedBoin[i])
        {
            tmp[length] = boin[i];
            usedBoin[i] = true;
            if(f(length + 1)) return true;
            usedBoin[i] = false;
            tmp[length] = NULL; 
            return false;

        }
    }
    for (int i = 0; i < 5; i++) // siin
    {
        if (!usedSiin[i])
        {
            tmp[length] = siin[i];
            usedSiin[i] = true;
            if(f(length + 1)) return true;
            usedSiin[i] = false;
            tmp[length] = NULL;  
        }
    }
    return false;
}


int main()
{
    boin[0]='i';
    boin[1]='a';
    boin[2]='a';
    boin[3]='e';
    boin[4]='u';
    boin[5]='u'; 
    siin[0]='n';
    siin[1]='b';
    siin[2]='m';
    siin[3]='g';
    siin[4]='r';
    int n ;
    cin >> n;
    string sss;
    rep(i,n)
    {
        cin >> sss;
        listm.push_back(sss);
    }
    if (f(0))
    {
        rep(i,11)
            cout << tmp[i];
        cout << endl;
    }
    else
    {
       cout << "No" << endl;
    }
    return 0;

}


0