演算法:dp
分析:跟傳紙條是乙個題,只不過本題算上了起點和終點,即從起點出發也要算上起點,因此在最後再加上起點和終點位置上的值即可。
program num;
const
maxn=9;
var n:longint;
a:array [0..maxn,0..maxn] of longint;
f:array [0..maxn,0..maxn,0..maxn,0..maxn] of longint;
procedure init;
var x,y,v:longint;
begin
readln(n);
readln(x,y,v);
while x+y+v<>0 do
begin
a[x,y]:=v;
readln(x,y,v);
end;
end;
function max(x,y:longint):longint;
begin
if x>y then exit(x) else exit(y);
end;
procedure main;
var i,j,k,l:longint;
begin
for i:=1 to n do
begin
for j:=1 to n do
begin
for k:=1 to n do
begin
for l:=1 to n do
begin
if (i<>k) or (j<>l) then
begin
f[i,j,k,l]:=max(max(f[i-1,j,k-1,l],f[i,j-1,k,l-1]),max(f[i-1,j,k,l-1],f[i,j-1,k-1,l]))+a[i,j]+a[k,l];
end;
end;
end;
end;
end;
end;
begin
assign(input,'num.in'); reset(input);
assign(output,'num.out'); rewrite(output);
init;
main;
writeln(f[n-1,n,n,n-1]+a[1,1]+a[n,n]);
close(input); close(output);
end.
樣本收集問題
機械人rob在乙個有n n 個方格的方形區域f 中收集樣本。i,j 方格中樣本的價值為v i,j 如下圖所示 rob 從方形區域f 的左上角a點出發,向下或向右行走,直到右下角的b 點,在走過的路上,收集方格中的樣本。rob 從a點到b 點共走2次,試找出rob 的2條行走路徑,使其取得的樣本總價值...
樣本收集問題JAVA實現
機械人rob 從方形區域f 的左上角a點出發,向下或向右行走 直到右下角的b 點,在走過的路上,收集方格中的樣本。rob 從a點到b 點共走2次,試找出rob 的2條行走路徑,使其取得的樣本總價值最大。input 第1 行有1 個正整數n,表示方形區域f有n n 個方格。接下來每行有3 個整數,前2...
關於num 2的問題
首先我們先來 一下這個結果,大概很多同志都會思考一下,然後覺得是201吧 其實我一開始也是這麼覺得的,但是大多數往往是錯的,捂臉 首先我是使用的cb,預設的gcc編譯器,gdb32除錯。直接讓我們來看看除錯結果!換個方式看看吧 由此可見,運算子建立了乙個新的執行變數 新的記憶體位址 但是乘法並沒有,...