天天写算法之棋盘游戏

3人阅读 评论(0) 收藏 举报
分类:

这个题和前面的题一样,就是求最大匹配,这里最关键的一点是,阴影部分不会影响到车之间的攻击,也就是说可以直接飞过去,很皮,感觉是强行为了写hungary算法强行凑出来的题目。
#include<iostream>
#include<string.h>
#include<cstdio>
#define MAX 155
using namespace std;

int n ,m , k;
int Map[MAX][MAX];//两个人是否有关系
bool used[MAX];//是否被访问过
int linker[MAX];//查看被连接的那一个集合是否有男生来连接了。

bool dfs(int a){
    for(int j = 1 ; j <= m ; j ++)
    {
        if(!used[j]&&Map[a][j])
        {
            used[j]=1 ;
            if(linker[j]==-1||dfs(linker[j]))
            {
                linker[j]=a;
                return true ;
            }
        }
    }
    return false ;
}

int hungary(){
    int ans = 0 ;
    memset(linker,-1,sizeof(linker));
    for(int i = 1 ; i <=n ; i ++)
    {
        memset(used,0,sizeof(used));
        if(dfs(i)) ans+=1;
    }
    return ans ;
}
int main(){
  int i,j,l,a,b ,index = 1,important,maxp;
  while(scanf("%d%d%d",&n,&m,&k)!=EOF)
  {
      memset(Map,0,sizeof(Map));
      for(i = 0 ; i <k ;i ++)
      {
          scanf("%d%d",&a,&b);
          Map[a][b]= 1 ;
      }
      maxp = hungary();
      important = 0;
      for(i = 1 ; i<=n ; i++)
      {
          for(j = 1 ; j <= m ; j++)
          {
              if(Map[i][j])
              {
                  Map[i][j]= 0 ;
                  int temp = hungary();
                  if(temp!=maxp)
                    important++;
                  Map[i][j]= 1 ;
              }

          }
      }
      printf("Board %d have %d important blanks for %d chessmen.\n",index++,important,maxp);
  }
}

代码:
查看评论

棋盘类游戏编程

将对图案的操纵,转换为对变量(基本类型,二维数组)的操做; 0. 棋盘坐标系与棋盘元素的表示 简单的L型图案(三个单元格)在棋盘中心位置的形态为:const int coverType[4][3...
  • lanchunhui
  • lanchunhui
  • 2016-09-05 00:02:33
  • 559

Java 4X4棋盘游戏

分别用四种三个方块组成的图块填充棋盘,因而会空白一个,所以由用户指定一个棋盘方块,然后电脑计算出把剩余棋盘填充完。 黑色由用户指定: StarttMain.java代码: ...
  • Jayszxs
  • Jayszxs
  • 2016-03-17 16:45:16
  • 396

天天写算法之

点击打开链接这个题,诶~~~,转变一下思路,当时一心想着用背包解决,把正确思路给淹没了。#include &amp;lt;iostream&amp;gt; #include &amp;lt;ioman...
  • qq_36616268
  • qq_36616268
  • 2018-03-25 13:16:17
  • 10

BZOJ4705 棋盘游戏

TC SRM 555 DIV1 的原题…… 我们发现进行了一系列操作后黑格子的数量只与有多少行被进行了奇数次操作以及有多少列被进行了奇数次操作有关 假设有i行进行了奇数次操作,j列进行了奇数次操作,那...
  • neither_nor
  • neither_nor
  • 2016-11-03 15:55:43
  • 507

为什么说天天P图是一款人工智能App

提到人工智能,大多数人的第一反应就是距离我们太远了。智能机器人、无人驾驶,这些好像都是未来式。我们一直以来都在告诉大家,人工智能其实就在我们身边。比如,应用最广的美颜自拍,更准确的说,是人像处理。现在...
  • R5A81qHe857X8
  • R5A81qHe857X8
  • 2017-12-21 00:00:00
  • 258

棋盘游戏 HDU - 1281

中文题面注意建图方式:将行与列看作顶点 棋子所在的位置的行与列所对应的顶点建边#include &amp;lt;iostream&amp;gt; #include &amp;lt;cstring&am...
  • weixin_40959045
  • weixin_40959045
  • 2018-02-23 15:05:20
  • 19

【算法】棋盘游戏(game)解题报告

棋盘游戏(game) 源程序名       game.???  (pas,c,cpp) 可执行文件名   game.exe 输入文件名     game.in 输出文件名     game.ou...
  • d521000121
  • d521000121
  • 2016-11-07 22:52:34
  • 958

hdu acm 1281 棋盘游戏

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submissio...
  • hyf20144055065
  • hyf20144055065
  • 2016-02-03 16:35:07
  • 407

hdu 1281 棋盘游戏 (二分匹配)

题目链接 棋盘游戏 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota...
  • fouzhe
  • fouzhe
  • 2016-08-24 10:38:05
  • 446

java编程求解和为15的棋盘游戏问题。

  • 2013年03月13日 21:17
  • 17KB
  • 下载
    个人资料
    持之以恒
    等级:
    访问量: 1710
    积分: 1080
    排名: 4万+
    文章存档
    最新评论