3.1 括號
★實驗任務
給你乙個長度為 n 的由'('和')'組成的括號序列,你能找出這個序列中最長合法括號子串行麼?合法括號序列是指,在這個序列中,所有的左括號都有唯一的右括號匹配;所有的右括號都有唯一的左括號匹配。例如:((()))()()便是乙個長度為 10 的合法括號序列,而(()))( 則不是。
★資料輸入
輸入只有一行,是乙個長度為 n(1<=n<=10^6)的由'('和')'組成的括號序列。
★資料輸出
輸出兩行。第 1 行表示最長合法括號序列的長度。第 2 行表示最長合法括號序列的個數。
如果沒有合法括號序列輸出 0和 1。
輸入示例1
)((())))(()())
輸出示例1
6
2
輸入示例2
))(
輸出示例2
0
1
第一次由於審題不清,耽誤了好多時間,最後採取了一版比較麻煩的**
#include#includeusing namespace std;
class solution
stackstk;
for (int i = 0; i < n; i++)
else }}
bool flag = false;
int temp = 0;
for (int i = 0; i < n; i++)
else if (cnt[i] == 1)
if (temp > maxans)
else if (temp == maxans)
}return maxans;
}};int main()
else
}
這一種方法參考了力扣的解答。參考位址
#include#includeusing namespace std;
class solution
else
else else if(maxans==i-stk.top())
// maxans = max(maxans, i - stk.top());}}
}return maxans;
}};int main()
else
}
3.9 文件
★實驗任務
tonyy 是乙個word 小白,今天他對 word 中撤銷和恢復功能特別感興趣,玩耍了乙個上午(mdzz~),現在他知道了它們的功能和快捷鍵:
撤銷:ctrl+z,可以撤銷最近 1 次之前的恢復和 input 操作。
恢復:ctrl+y,可以恢復最近1 次之前的撤銷操作,但是 input 操作之前的撤銷操作不能被恢復。
當然,tonyy 還要往裡寫東西,操作格式為 input str(str中不含空格,str長度為m,1=現在他對 word 玩耍了起來,想知道玩耍完的結果,你可以幫助他嗎?
★資料輸入
輸入第一行為乙個正整數 n(0<=n<=10000),表示 tonyy 的操作次數。
接下來 n 行,為上述的操作之一。
其中可能有不合法操作,直接跳過即可。
★資料輸出
輸出 word 中的內容,字串間用空格隔開,如果 word 為空,輸出」no output」
輸入示例1
4
input a
ctrl+z
ctrl+y
input b
輸出示例1
a b
輸入示例2
5
input a
input b
ctrl+z
input d
ctrl+y
輸出示例2
a d
這道題目需要注意的是可能存在連續撤銷的操作,需要儲存的字串不止乙個,不能簡單的用乙個變數儲存撤銷的元素。
#include#include#includeusing namespace std;
int main()
} else if (s == "ctrl+z")
} else if (s == "ctrl+y")
}} if (str.empty())
else
while (!disp.empty())
}}
第三次資料結構作業
a.連續線段 題目描述 給定若干個線段,求最多的首尾相連的線段條數,線段 100 題目解決 我其實不太知道這道題目用現在的知識應該怎麼解?寫了個最短 長 路演算法,floyd那種的,怎麼抽象這個模型呢,就是把每乙個線段都抽象成圖論模型中的乙個點,如果兩條線段首尾相連就給他們倆中間連一條邊長為1的邊,...
第三次作業
2 12有600 mb 兆位元組 的資料,需要從南京傳送到北京。一種方法是將資料寫到磁碟上,然後託人乘火車這 些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料。試比較這兩種方法的優劣。若資訊傳送速率為33.6kb s,其結果又如何?解 當傳送速率為2.4k...
第三次作業
1 有600mb 兆位元組 的資料,需要從南京傳送到北京 一種方法是將資料寫到磁碟上,然後託人乘火車將這些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料,試比較這兩種方法的優劣。若資訊傳送的速率為33.6kb s,其結果又如何?解 假定連續傳送且不出錯。若...