題目描述
某城市有一個火車站,鐵軌鋪設如圖所示,有n節車廂從A方向駛入車站,按進站順序編號為1至n。你的任務是判斷是否能讓它們按照某種特定的順序進入B方向的鐵軌并駛出車站。為了重組車廂,你可以借助中轉站C。這是一個可以停放任意多節車廂的車站,但由于末端封頂,駛入C的車廂必須按照相反的順序駛出車站。例如:出站順序(5,4,1,2,3)是不可能的,而(5,4,3,2,1)是可能的。對于每節車廂,一旦從A移入C,就不能再回到A了;一旦從C移入B,就不能回到C了。換句話說,在任意時刻,只有兩種選擇A->C和C->B。
現在給你一種1到n的排列,請你判斷是否是題目描述的一種可能,如果是請輸出Possible,否則輸出Impossible。
輸入格式
第一行輸入t(1<=t<=10),表示測驗資料的組數。 第一行一個整數n(1<=n<=100),表示有n節車廂。 接下來一行有n個整數,表示對應順序。
輸出格式
對于每組資料,輸出一行。若可以,則輸出“Possible”,否則輸出“Impossible”。
輸入輸出樣例
輸入 #1
2
5
1 2 3 4 5
5
5 4 1 2 3
輸出 #1
Possible
Impossible
#include <iostream>
using namespace std;
int stack[101],h[101];
bool AuA[11];
int main()
{
int t,n,i,x,top = 0,k = 0;
cin>>t;
k = 0;
for(x = 0;x < t;x++)
{
cin>>n;
for(i = 0;i < n;i++) cin>>h[i];
for(i = 1;i <= n;i++)
{
stack[top] = i;
top++;
while(top != 0)
{
if(stack[top - 1] == h[k])
{
k++;
top--;
}
else break;
}
}
if(top == 0&&k == n) AuA[x] = 1;
k = 0;
}
for(i = 0;i < t;i++)
{
if(AuA[i]) cout<<"Possible"<<endl;
else cout<<"Impossible"<<endl;
}
return 0;
}
請問我的代碼有什么問題?
uj5u.com熱心網友回復:
跟蹤除錯的技能學會后解決問題就行了。uj5u.com熱心網友回復:
沒有大佬來幫忙嗎
,重新寫一個代碼也好,但請稍微解釋一下
uj5u.com熱心網友回復:
打個斷點debug一下,一步一步的運行,看每一步是不是跟你計算的結果一樣,很快就能找到問題的了;轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/64566.html
標籤:C++ 語言
上一篇:演算法求解
