pascal 階乘問題,pascal乘積最大問題

2025-01-06 09:40:20 字數 1483 閱讀 2260

1樓:匿名使用者

___請樓上注意題目描述,只求一位,根本不用高精度。

另外,請同志們尊重提問者,認真作答,不要以一兩句話敷衍了事!

ps:我是一樓。

pascal乘積最大問題

2樓:堯文靜斯旎

我們一起來分析一下:

設字串長度為n,乘號數為k,如果n=50,k=1時,有(n-1)=49種不同的乘法,當k=2時,有c(2,50-1)=1176種乘法,既c(k,n-1)種乘法,當n、k稍微大一些的時候,用窮舉的方法就不行了。

設數字字串為a1a2…an

k=1時:乙個乘號可以插在a1a2…an中的n-1個位置,這樣就得到n-1個子串的乘積:

a1*a2…an,a1a2*a3…an,a1a2…運雀a

n-1*an

這相當於是窮舉的方法)

此時的最大值=max

設f[i,j]表示在。

i個數中插入。

j個乘號的最大值,g[i,j]表示從ai到aj的數字列,肢源則可得到動態轉移方程:

f[i,j]

max1<=i<=n,1<=j<=k)

邊界:f[i,0]

g[1,i]

數列本身)階段:子問題是在子串中插入j-1,j-2……1,0個乘號,因此乘號個數作為階段的劃分(j個階段)

狀態:每個階段隨著被乘數數列的變化劃分狀態。

決策:在每個階段的每種狀態中做出決策。

資料結構:此題不需要高精度,pascal用longint即可ac)

intn,k;

n為數字個數,k為劃分個數*/

inti,j,l;

迴圈變數*/

charc;

字元讀入*/

intdata[50]=;

存數字的陣列*/

intg[50][50],f[50][10];

g為數字列,f為動態規劃陣列*/

初始化:cin

nk;*讀入,n,k*/

for(i=1;i<=n;i++)cin

c;*讀入乙個數字*/

data[i]=c-'0';

字元轉化數字*/

g[i][i]=data[i];/初始化數列*/

for(i=1;i<=n-1;i++)

for(j=i+1;j<=n;j++)

g[i][j]=g[i][j-1]*10+data[j];

初始化數列*/

for(i=1;i<=n;i++)

f[i][0]=g[1][i];

初始化動態規劃陣列*/

動態規劃:for(i=1;i<=n;i++)方程:f[i,j]表示前i個數中插入j個*號的最優值。*/

for(j=1;j<=i+1;j++)

for(l=1;l<=i-1;l++)

f[i][j]=max(f[i][j],f[l][j-1]*g[l+1][i]);

輸出f[n][k]

pascal 棋盤問題 搜尋演算法

你要的是方案還是方案數量。用迴圈並記錄,最後輸出。問題再詳細點,我方便給你做 可能要加上位運算優化。就不給了,我也沒有 棋盤覆蓋問題演算法,pree pascal,幫一下 下面乙個跟noip第十三屆的一模一樣。pascal 棋盤數問題 誰能幫我看下錯在 因為在x 中x是longint型的,可是有 所以...

pascal裝箱問題,有資料過不了

你要問什麼?pascal 裝箱問題 要有註釋,越詳細越好 var m,n,i,w,x longint f array 0.20001 of longint begin read m,n for i 1 to n do begin read w for x m downto w do if f x w...

pascal題目,Pascal題目

1.var a,b,i,m,n longint t text begin a 0 b 0 readln m for i 1 to m do begin readln n if n mod 2 0 then a a n else b b n end writeln b writeln a end.2....