杭電1003(大數)簡單的DP簡單過

2021-06-16 23:46:49 字數 1352 閱讀 2748

此題名字是大數,其實不用long int 也是可以ac的,不過用了還是好些,畢竟大賽中測試資料還是比較好的,這是個典型的dp類的最大子串行題。這道題影藏了很多細節,好多人的**和杭電的大神貼出來的參考**都是一樣的,但是就是不給ac,這種情況很多,關鍵是很多時候要考慮邊界情況,因為杭電的測試中很多組資料必定會包含有他的各個方向,大部分都是用於看率步驟而導致的。下面選擇幾種方法**一下:

如果只是求最長子序列我想還是很簡單的,關鍵是還要輸出他的起始端的數字,這個就有點麻煩了。

題目的大意是給你一段數字,要求是求出連續的一段中可能的數字的和的最大值。對於每個測試的情況下,你應該輸出兩行,第一行是「案例:」#意味著測試用例數,第二行包含三個整數序列中,最大琛子的起始位置序列的子串行的結束位置,如果有乙個以上的結果,輸出的第乙個輸出乙個空行之間的兩種情況。

方法一(整個考慮):

因為題目中是每個數字都-1000到1000.所以我們可以用乙個數(小於-1000即可)這是因為這個數是用來記錄一連串數字的和的,由於不知道第乙個輸入的輸的大小,所以應該以最小的數來考慮。

下面以**來分析一下:

#include

#include

using namespace std;

int main()

if(sum<0)

}cout<<"case "《下面貼幾個例子,如果這幾個例子過了就差不多了

-1  -2  -3 10(在此省略了前面的數字,下同)

結果:case 1: 10 4 4

1 2 3 -100 1 2 3 -100 1 2 2 2 2

結果case 2:9 9 13

-1 -2 -3 -4 -5

結果:case  3:-1 1 1

-3 -2 -1 -2 -3

結果:case 4:-1 3 3

0 0 2 0

結果:case :2 1 3

如果上訴結果都沒有對的話是不可能ac的,那就是自己的程式的問題了。

杭電 1002 大數相加

大數相加可以用字串的方法做,先將需要相加的大數倒過來,然後一一對應相加,如果 i 大於十,則向 i 1 加一,其實就與本來的兩數相加一樣,只不過大數相加是倒過來後在各位相加,最後再將結果倒過來 include includeusing namespace std define max len 100...

杭電1235最少攔截系統(簡單dp)

description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈.怎麼辦呢...

杭電acm1002 大數加法

原理就是模仿小學的數學加法 因為我們要從個位開始加起 所以需要先倒置儲存 使前面為低位,先進行運算 直接上 include include int n,c 1000 d 1000 sum 1000 char a 1001 b 1001 intmain for j 0 j 倒置儲存 int maxle...