竹園論壇
標題: TOJ 119 / B. Brainwash [打印本頁]
作者: JasonTsai@FB 時間: 2014-12-5 20:11
標題: TOJ 119 / B. Brainwash
本帖最後由 JasonTsai@FB 於 2014-12-7 00:26 編輯
測試時都正常,但上傳後一直WA,不知道哪裡有bug,請各位幫忙抓,謝謝。[C++] 純文本查看 復制代碼
#include<iostream>
#include<utility>
using namespace std;
int main()
{
int N, T, a, b;
bool quit = false;
cin >> N;
int data[N];
for (int i = 0; i < N; i++)
cin >> data;
cin >> T;
for (int i = 0; i < T; i++)
{
cin >> a >> b;
if (quit == false)
{
if (b - a > 7)
quit = true;
else
swap (data[a - 1], data[b - 1]);
}
}
if (quit == true)
{
cout << "I QUIT!\n";
for (int i = 0; i < N - 1; i++)
cout << data << ' ';
cout << data[N - 1] << '\n';
}
else
{
cout << "SORTED!\n";
for (int i = 0; i < N - 1; i++)
cout << data << ' ';
cout << data[N - 1] << '\n';
}
return 0;
}
作者: Sylveon 時間: 2014-12-6 22:12
[C++] 純文本查看 復制代碼
#include<iostream>
#include<algorithm> //背這一個比較通用,反正也是要背
//#include<utility>
using namespace std;
//陣列要宣告成常數大小,過大的陣列要放在全域變數
int data[200000];
int main()
{
int N, T, a, b;
bool quit = false;
cin >> N;
//不要這樣寫,這不符合現在C++的規範,如果N太大會RE給你看
//int data[N];
//可以 從1開始放 更符合題目敘述
for (int i = 1; i <= N; i++)
cin >> data;
cin >> T;
//for (int i = 0; i < T; i++)
while(T--) // Advance
{
cin >> a >> b;
if (quit == false)
{
//中間夾7個檔案是相減大於7嗎?
//AXXXXXXXB
//有人規定a<b嗎?
if (b - a > 7) //WA 仔細思考
{
quit = true;
break; //失敗直接離開while迴圈
}
else
swap (data[a], data);
}
}
if (quit == true)
{
cout << "I QUIT!\n";
}
else
{
cout << "SORTED!\n";
}
for (int i = 1; i < N ; i++)
cout << data << ' ';
cout << data[N] << '\n';
return 0;
}
作者: JasonTsai@FB 時間: 2014-12-6 23:05
在某一次submit的時候,我有把[C++] 純文本查看 復制代碼
if (b - a > 7)
改成[C++] 純文本查看 復制代碼
if (b - a > 7 || a - b > 7)
不過還是WA
至於[C++] 純文本查看 復制代碼
while(T--)
的部分我再慢慢研究
作者: JasonTsai@FB 時間: 2014-12-7 00:00
已經改成這樣,不過還是WA
[C++] 純文本查看 復制代碼
#include<iostream>
#include<utility>
using namespace std;
int main()
{
int N, T, a, b, data[200000];
cin >> N;
for (int i = 0; i < N; i++)
cin >> data;
cin >> T;
while(T--)
{
cin >> a >> b;
if (b - a > 7 || a - b > 7)
goto quit;
else
swap (data[a - 1], data[b - 1]);
}
cout << "SORTED!\n";
for (int i = 0; i < N - 1; i++)
cout << data << ' ';
cout << data[N - 1] << '\n';
return 0;
quit:
cout << "I QUIT!\n";
for (int i = 0; i < N - 1; i++)
cout << data << ' ';
cout << data[N - 1] << '\n';
return 0;
}
作者: jd3 時間: 2014-12-7 00:09
間隔超過7個表示要>8~~~
作者: Sylveon 時間: 2014-12-7 14:15
不要用goto 參考我程式的寫法
| 歡迎光臨 竹園論壇 (http://forum.tfcis.org/) |
Powered by Discuz! X3.2 |