栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2870 Light Up

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2870 Light Up

#include <stdio.h>#include <string.h>int n, m, ans;int mp[11][11], vis[11][11], adj[11][11];int min(int a, int b) {    return  a>b?b:a;}void jie(int x, int y, int val) {    adj[x+1][y] += val;    adj[x-1][y] += val;    adj[x][y+1] += val;    adj[x][y-1] += val;    vis[x][y] += val;    int i;    for(i = x-1;i >= 1;i --) {        vis[i][y] += val;        if(mp[i][y]>=0)    break;    }    for(i = x+1;i <= n; i++) {        vis[i][y] += val;        if(mp[i][y]>=0)    break;    }    for(i = y-1;i >= 1; i--) {        vis[x][i] += val;        if(mp[x][i]>=0)    break;    }    for(i = y+1;i <= m; i++) {        vis[x][i] += val;        if(mp[x][i]>=0)    break;    }}bool l[11][11];void dfs(int x, int y, int tot) {    int i, j;    if(y > m) {        if(x < n) dfs(x+1, 1, tot);        else { for(i = 1;i <= n; i++) {     for(j = 1;j <= m; j++) {         if(mp[i][j] == -1 && !vis[i][j])    return ;         if(mp[i][j] > 0 && adj[i][j]+1 != mp[i][j]) return ;     } } ans = min(ans, tot);        }        return ;    }    if(mp[x][y] == -1) {        dfs(x, y+1, tot);        if(!vis[x][y]){ jie(x, y, 1); dfs(x, y+1, tot+1); jie(x, y, -1);        }    }    else {        for(i = x-1;i >= 1;i --) if(mp[i][y] == -1 && !vis[i][y]) return ;        dfs(x, y+1, tot);    }}int main() {    int i, b, k, x, y;    while(scanf("%d%d", &n, &m) != -1 && n) {        memset(mp, -1, sizeof(mp));        scanf("%d", &b);        for(i = 0;i < b; i++)   scanf("%d%d%d", &x, &y, &k), mp[x][y] = k+1;        memset(vis, 0, sizeof(vis));        memset(adj, 0, sizeof(adj));        ans = 1111111;        dfs(1, 1, 0);        if(ans == 1111111)  puts("No solution");        else    printf("%dn", ans);    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号