ZOJ2067 经典 DP

来源:互联网 发布:双倍定金怎么算法 编辑:程序博客网 时间:2024/06/06 02:52

题目:一个由‘.’和‘#’组成矩形,统计里面'.'组成的矩形的个数。点击打开链接

自己写挂了,懒得搞了

#include <stdio.h>#include <string.h>#define MAX 110#define inf 0x7fffffffchar a[MAX][MAX];int count[MAX][MAX];int n;int min(int x,int y){return x<y?x:y;}void sum(){int i,j;for(i = 1;i <= n; i++){for(j = 1;j <= n; j++){if(a[i][j] == '.'){count[i][j] = count[i][j - 1] + 1; }}}}int Min(){int i,j,k;int ans = 0;for(i = 1;i <= n; i++){for(j = 1;j <= n; j++){int m = inf;for(k = i;k <= n && count[k][j]; k++)//1列1列判断 中间断了结束 {m = min(m,count[k][j]);ans += m;}}}return ans;}int main(){int i;while(scanf("%d",&n)!=EOF){for(i = 1;i <= n; i++)scanf("%s",a[i] + 1);memset(count,0,sizeof(count));sum();printf("%d\n",Min());}return 0;}

原创粉丝点击