-
讓我們在vijos上蓋房子吧! 看看我的解決方案:
問題是可以建造的最大房屋,這實際上是動態規則的經典問題,最大的子矩陣。
在這個問題中,我們可以以行為乙個階段,每單位土地就是狀態,最優函式f[i,j]是指以(i,j)為正方形右下角頂點可以建造的最大房屋單位。
例如,如果地圖是,似乎有點凌亂。
那麼 f 是。 f[1,1],f[1,2],f[2,1]都是1,因為它們只能在正方形右下角的頂點用它們建造單元1的房子,而f[2,2]可以用單元2建造房屋(房子的四個頂點是(1,1),(1,2),(2,1),(2,2))。
不難推斷,f[i,j]與f[i-1,j],f[i,j-1],f[i-1,j-1]密切相關,如果f[i,j]=2,則f[i,j-1],f[i-1,j]f[i-1,j-1]必須大於或等於1。
所以等式是。
f[i,j]=map[i,j]*(min+1);
至此,問題就解決了。
0ms沒問題。
順便說一句,有邊界。
f[i,1]=map[i,1]
f[1,j]=map[1,j]
-
問題是什麼?? 說明? 我不明白。
-
慢慢判斷。 然後。。 輸出。。 然後。。 那麼就沒有了。
#include
#include
#include
#include
#include
using namespace std;
long long c=0,word[6]=,out=0;
if(s=="two"||s=="both"||s=="second")
if(s=="three"||s=="third")if(s=="four")
if(s=="five")
if(s=="six")
if(s=="seven")
if(s=="eight")
if(s=="nine")
if(s=="eleven")
if(s=="twelve")
if(s=="thirteen")
if(s=="fourteen")
if(s=="fifteen")
if(s=="sixteen")
if(s=="seventeen")
if(s=="eightteen")
if(s=="nineteen")
int main()
sort(word,word+c);
for(int i=0;icout
-
你能看乙個例子嗎?
這種神話真的是......
規則(2)我不明白。
-
它相當於一張桌子。
0 1 2 3 4 5 6 7 (k)
x*x) 可以無限期延長。
var n,m,i,j,k,t:longint;
a:array[0..1001,0..1001]of longint;
beginreadln(m,n);
n:=n*n mod 1000;
-
思路:1、第乙個是起點,這是必要的點,所以要把它的價值加到累加器上;
2.以後只能往前跳,落點規則是所有剩餘點中最大的。 對於研究:
第一次在1點鐘位置; 第二次,在接下來的4個點中選擇最大的3點,跳起來; 第三次,選擇剩下的兩分中的較大者,在4分處跳起來; 第四個選秀權是最後 5 個跳起來的。 因此:1 5 4 3 13。
-
尷尬,我是來搶工作的——我沒有除錯,原諒我。
vark:real;
a,b,n,i:longint;
beginreadln(n);
a:=1;b:=1;
for i:=1 to n do
begink:=k+a/b;
b:=a+b;
a:=b-a;
end;writeln(k:0:2);
end.
-
這應該是對的!
varch:char;
a:array[1..6] of char;
i,j:integer;
beginfor i:=1 to 5 do
a[i]:=chr(64+i);
for i:=1 to 5 do beginfor j:=1 to 5 do
write(a[j]);
writeln;
a[6]:=a[1];
for j:= 1 to 5 do
a[j]:=a[j+1];
end;end.
我試過了! 通過! 用於!
-
這種問題不需要迴圈。
房東不知道自己是否滿意
program lt1;
beginwriteln('a b c d e');
writeln('b c d e a');
writeln('c d e a b');
writeln('d e a b c');
writeln('e a b c d');
end.他們都是親手捶打的,瞭望塔領主採用!!