#20549: WA求解 您的答案為: ((())(()))()(()(((()))())) 正確答案為: ((())(((())()(()))()(())(()()())


kolagh7486 (電腦前的咖啡)

學校 : 國立臺中高級工業職業學校
編號 : 88363
來源 : [1.200.121.142]
最後登入時間 :
2022-09-24 16:06:42
a229. 括號匹配問題 -- 名題精選百則 | From: [114.41.13.19] | 發表日期 : 2020-02-05 15:50

明明題目的輸入數字範圍只有1~13但
WA上的正確答案的括號有32個
也就是輸入有到16???

以下是程式碼 :
#include <iostream>
using namespace std;
int num = 0;
void process(char* val ,int left ,int right ,int index)
{
cout.tie(0);
ios_base::sync_with_stdio(false);
if (index == num * 2)
{
val[index] = '\0';
cout << val << '\n';
return;
}
if (left < num)
{
val[index] = '(';
process(val, left + 1, right, index + 1);
val[index] = ' ';
}
if (right < left)
{
val[index] = ')';
process(val, left, right+1, index + 1);
val[index] = ' ';
}
}
int main() {


while (cin >> num)
{
char* val = new char[num * 2 + 1];
process(val, 0, 0, 0);
cout << '\n';
}
}
 
#20586: Re:WA求解 您的答案為: ((())(()))()(()(((()))())) 正確答案為: ((())(((())()(()))()(())(()()())


s009 (jessie)

學校 : 不指定學校
編號 : 87583
來源 : [140.118.82.10]
最後登入時間 :
2022-04-28 17:31:25
a229. 括號匹配問題 -- 名題精選百則 | From: [118.170.46.187] | 發表日期 : 2020-02-10 17:48

明明題目的輸入數字範圍只有1~13但
WA上的正確答案的括號有32個
也就是輸入有到16???

以下是程式碼 :
#include 
using namespace std;
int num = 0;
void process(char* val ,int left ,int right ,int index)
{
cout.tie(0);
ios_base::sync_with_stdio(false);
if (index == num * 2)
{
val[index] = '\0';
cout << val << '\n';
return;
}
if (left < num)
{
val[index] = '(';
process(val, left + 1, right, index + 1);
val[index] = ' ';
}
if (right < left)
{
val[index] = ')';
process(val, left, right+1, index + 1);
val[index] = ' ';
}
}
int main() {


while (cin >> num)
{
char* val = new char[num * 2 + 1];
process(val, 0, 0, 0);
cout << '\n';
}
}

我覺得應該是測資壞掉了

因為不只那行不合理

 

我試著在583535行加入那串不合理的答案

發現從那行之後 少了一大段答案 跳了好幾行

然後我又很有耐心的找到那行對的答案接上去

...

...

...

結果...

又過了一小段

答案居然變成n = 12的答案

直接放棄

X的 浪費我一堆時間

 

結論

別浪費時間了

等測資修好再來吧

 
ZeroJudge Forum