Hdu 3368 Reversi(暴力)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3368

思路:枚举所有可以下的点,每个点从8个方向进行寻找每个方向上的下一个黑子,得到该点能翻转的白棋数,比较取最大值。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int dx[]= {0,1,1,1,0,-1,-1,-1};
const int dy[]= {1,1,0,-1,-1,-1,0,1};
int t,ans=0,num;
char g[15][15];
int solve(int x,int y)
{
    for(int k=0; k<8; k++)
    {
        int tmp=0;
        int xx=x+dx[k];
        int yy=y+dy[k];
        while(g[xx][yy]=='L')
        {
            tmp++;
            xx+=dx[k],yy+=dy[k];
        }
        if(g[xx][yy]=='D') num+=tmp;
    }
    return num;
}
int main()
{
   // freopen("in.txt","r",stdin);
    int cas=0;
    scanf("%d",&t);
    while(t--)
    {
        ans=0;
        for(int i=1; i<=8; i++)
            for(int j=1; j<=8; j++)
                scanf(" %c",&g[i][j]);
        //getchar();
        for(int i=1; i<=8; i++)
            for(int j=1; j<=8; j++)
                if(g[i][j]=='*')
                {
                    num=0;
                    ans=max(ans,solve(i,j));
                }
        printf("Case %d: %d\n",++cas,ans);
    }
    return 0;
}
时间: 2024-11-01 22:01:56

Hdu 3368 Reversi(暴力)的相关文章

HDU 3368 Reversi

Reversi Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1364    Accepted Submission(s): 540 Problem Description Reversi, also called Othello, is a two-sided game.Each of the two sides correspond

hdu 4876(剪枝+暴力)

题意:给定n,k,l,接下来给出n个数,让你从n个数中选取k个数围成一圈,然后从这k个数中随意选出连续的m(m>=1&&m<=k)个数进行异或后得到[l,r]区间的所有值,让你求最大的r. 分析:关键问题是需要剪枝! 代码实现: #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #inclu

hdu 4499 Cannon(暴力)

题目链接:hdu 4499 Cannon 题目大意:给出一个n*m的棋盘,上面已经存在了k个棋子,给出棋子的位置,然后求能够在这种棋盘上放多少个炮,要求后放置上去的炮相互之间不能攻击. 解题思路:枚举行放的情况,用二进制数表示,每次放之前推断能否放下(会不会和已经存在的棋子冲突),放下后推断会不会互相攻击的炮,仅仅须要对每一个新加入的炮考虑左边以及上边就能够了. #include <cstdio> #include <cstring> #include <algorithm&

hdu 5077 NAND(暴力打表)

题目链接:hdu 5077 NAND 题目大意:Xiaoqiang要写一个编码程序,然后根据x1,x2,x3的值构造出8个字符,现在给定要求生成的8个字符,问 说Xiaoqiang最少要写多少行代码.代码内容只能为NAND操作和return操作,操作的变量可以是常数. 解题思路:输入总共就256中情况,所以暴力剪枝打表,打表的代码手贱给删了...所以就将一下思路,开一个s数组 表示变量,然后对应每一层每次两个变量进行NAND操作. 大致三个剪枝,dfs时候,变量出现相同就跳过:8个字符可以直接根

HDU 4435 charge-station(暴力+判图)

题目大意:给你一些点,他们可以连通,如果距离超过了d那么就要经过加油站,建立加油站的费用为第i个点是2^(i-1).求费用最小,输出二进制表示的最小费用. 费用和sum最坏等于=2^0+2^1+--+2^(n-1).所以最高位为0这个数字才会最小,从最高位暴力枚举如果删掉这个点之后图是连通的那么就可以删掉,否则不可以. 求图是否连通的时候可以爆搜求解,也可以并查集. charge-station Time Limit: 2000/1000 MS (Java/Others)    Memory L

hdu 4499 Cannon 暴力dfs搜索

Cannon Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 589    Accepted Submission(s): 338 Problem Description In Chinese Chess, there is one kind of powerful chessmen called Cannon. It can move

hdu 1407 1248 暴力枚举

背景:老了老了,做了这么久题竟然忘了EOF来文件结束了. 心得:一定要自己调试,直到自己觉得所有情况都考虑完了还是wa再借助网络. 学习:1.此题为缩减时间可对所有m打表,然后查表即可. #include<stdio.h> int main(void) { int num, x, y, z; while(scanf("%d", &num)!=EOF){ for (int i = 1; i*i <= num; i++){ for (int j = i; j*j

hdu 3768(spfa+暴力)

Shopping Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 758    Accepted Submission(s): 254 Problem Description You have just moved into a new apartment and have a long list of items you need t

BestCoder Round #50 (div.1) 1002 Run (HDU OJ 5365) 暴力枚举+正多边形判定

题目:Click here 题意:给你n个点,有多少个正多边形(3,4,5,6). 分析:整点是不能构成正五边形和正三边形和正六边形的,所以只需暴力枚举四个点判断是否是正四边形即可. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <cmath> 6 #define power(x) ((x)*(x))