成都創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供
松滋企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都做網(wǎng)站、網(wǎng)站建設(shè)、
H5開(kāi)發(fā)、小程序制作等業(yè)務(wù)。10年已為松滋眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。方格取數(shù)(1)
Time Limit : 10000/5000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 3 Accepted Submission(s) : 1
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
給你一個(gè)n*n的格子的棋盤(pán),每個(gè)格子里面有一個(gè)非負(fù)數(shù)。
從中取出若干個(gè)數(shù),使得任意的兩個(gè)數(shù)所在的格子沒(méi)有公共邊,就是說(shuō)所取的數(shù)所在的2個(gè)格子不能相鄰,并且取出的數(shù)的和大。
Input
包括多個(gè)測(cè)試實(shí)例,每個(gè)測(cè)試實(shí)例包括一個(gè)整數(shù)n 和n*n個(gè)非負(fù)數(shù)(n<=20)
Output
對(duì)于每個(gè)測(cè)試實(shí)例,輸出可能取得的大的和
Sample Input
3
75 15 21
75 15 28
34 70 5
Sample Output
188
View Code
#include
#include
using std::stack;
const int INF = 0x3f3f3f3f ;
const int MAXN = 1<<19 ;
int okay[MAXN/2], valid, n, cnt;
int g[25][25];
int dp[2][MAXN/2];
void judge()
{
for(int i=0; i<=valid; i++)
if(!(i&(i<<1)))
okay[++cnt] = i;
}
int sum(int x, int row)
{
int times = n, res = 0 ;
while( x )
{
if( x%2 )
res+= g[row][times];
x= x/2 ;
times-- ;
}
return res;
}
int max(int a, int b)
{return a>=b ?a :b ; }
int main()
{
int i, j, row;
bool flag ;
while(scanf("%d", &n)!=EOF)
{
cnt= 0;
valid= (1<
網(wǎng)頁(yè)題目:狀態(tài)dp-創(chuàng)新互聯(lián)
文章起源:
http://weahome.cn/article/doispc.html