uva 1330 City Game
2078 단어 game
사고방식: 현선법 구해 최대 서브매트릭스 분석: 1 상세한 자료는 클릭하여 링크 열기2 입력 형식에 주의해야 할 부분이 있는데 자모 뒤에 여러 개의 빈칸이 있을 수 있기 때문에 반드시 이 빈칸 코드를 필터해야 한다.
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN = 1010;
int mat[MAXN][MAXN];
int up[MAXN][MAXN] , Left[MAXN][MAXN] , Right[MAXN][MAXN];
int n , m;
int solve(){
int ans = 0;
int leftNum , rightNum;
for(int i = 1 ; i <= n ; i++){
//
leftNum = 0;
for(int j = 1 ; j <= m ; j++){
if(!mat[i][j]){
up[i][j] = 0;
Left[i][j] = 0;
leftNum = j;
}
else{
up[i][j] = i == 1 ? 1 : up[i-1][j]+1;
Left[i][j] = i == 1 ? leftNum+1 : max(Left[i-1][j] , leftNum+1);
}
}
//
rightNum = m+1;
for(int j = m ; j >= 1 ; j--){
if(!mat[i][j]){
Right[i][j] = m+1;
rightNum = j;
}
else{
Right[i][j] = i == 1 ? rightNum-1 : min(Right[i-1][j] , rightNum-1);
ans = max(ans , up[i][j]*(Right[i][j]-Left[i][j]+1));
}
}
}
return 3*ans;
}
int main(){
int Case;
char c;
scanf("%d" , &Case);
while(Case--){
scanf("%d%d" , &n , &m);
for(int i = 1 ; i <= n ; i++){
for(int j = 1 ; j <= m ; j++){
c = getchar();
while(c != 'F' && c != 'R')
c = getchar();
mat[i][j] = c == 'F' ? 1 : 0;
}
}
printf("%d
" , solve());
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pots of gold game: 누가 돈을 많이 받는지Pots of gold game: Two players A & B. 간단하게 말하면 많은 금화통이 한 줄로 늘어서서 두 사람이 번갈아 돈을 받는다.매번 실 끝에 있는 깡통만 가져가도 두 가지 선택이 있다.A부터 시작...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.