设为首页 加入收藏

TOP

HDU 4090 GemAnd Prince (DFS+BFS)/(DFS+DFS)
2014-11-23 21:28:00 来源: 作者: 【 】 浏览:4
Tags:HDU 4090 GemAnd Prince DFS BFS
题意:相信大家都玩过消消看,连在一起大于等于3个相同的颜色就可以消去了,这道题目还加了另外的一个条件,每次消完了之后都会下落然后左移,问你最多能得多少分。
题解:开始的时候我的第一想法是BFS+DFS,然后果、果断MLE,最后看了别人的代码,基本上是DFS+DFS或者DFS+BFS,哎,为什么我的思维就是与众不同呢
先来个错误代码
BFS+DFS:(开大了MLE,开小了WA)
 
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
using namespace std;  
  
typedef long long LL;  
const int N=2005;  
const int M=555555;  
const LL II=100000000;  
const int INF=0x3f3f3f3f;  
const double PI=acos(-1.0);  
  
int n,m,k;  
int Max;  
int cnt;  
bool vis[10][10];  
int t[8][2]={-1,-1, -1,0, -1,1, 0,-1, 0,1, 1,-1, 1,0, 1,1};  
int xiao[10][10];  
int leixing;  
struct xh  
{  
    int value;  
    short int s[8][8];  
}w,e,q[M];  
  
void prin()  
{  
    cout<<"************"<=n||y<0||y>=m)    continue;  
        if(vis[x][y]||w.s[x][y]!=leixing)   continue;  
        vis[x][y]=1;  
        w.s[x][y]=0;  
        cnt++;  
        dfs(x,y);  
    }  
}  
  
void yidong()  
{  
    int i,j;  
    for(i=0;i=0;j--)  
        {  
            if(w.s[j][i]!=0)  
            {  
                w.s[k][i]=w.s[j][i];  
                if(k!=j)  w.s[j][i]=0;  
                k--;  
            }  
        }  
    }  
    int k=0;  
    for(j=0;j=3)  
            sum+=ll[i]*ll[i];  
    return sum;  
}  
  
void BFS()  
{  
    int he=0,ta=0;  
    int i,j;  
    w.value=0;  
    q[ta++]=w;  
    while(he!=ta)  
    {  
        e=q[he++];  
        if(he==M)  
            he=0;  
        if((maxscore()+e.value)<=Max)  
            continue;  
        memset(vis,0,sizeof(vis));  
        for(i=0;i 
  

AC代码:(DFS+DFS)
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
using namespace std;  
  
typedef long long LL;  
const int N=2005;  
const int M=555555;  
const LL II=100000000;  
const int INF=0x3f3f3f3f;  
const double PI=acos(-1.0);  
  
int n,m,k;  
int Max,cnt;  
int w[8][8];  
int t[8][2]={-1,-1, -1,0, -1,1, 0,-1, 0,1, 1,-1, 1,0, 1,1};  
int leixing;  
  
inline int maxscore()  
{  
    int sum=0,i,j;  
    int ll[8];  
    memset(ll,0,sizeof(ll));  
    for(i=0;i=3)  
            sum+=ll[i]*ll[i];  
    return sum;  
}  
  
inline void yidong()  
{  
    int i,j;  
    for(i=0;i=0;j--)  
        {  
            if(w[j][i]!=0)  
            {  
                w[k][i]=w[j][i];  
                if(k!=j)  w[j][i]=0;  
                k--;  
            }  
        }  
    }  
    int k=0;  
    for(j=0;j=n||y<0||y>=m)    continue;  
        if(vis[x][y]||w[x][y]!=leixing)   continue;  
        vis[x][y]=1;  
        w[x][y]=0;  
        cnt++;  
        dfs(x,y,vis);  
    }  
}  
  
inline void debug(int p[][8])  
{  
    cout<<"************"<Max)   Max=tempv;  
            DFS(tempv);  
            read(sa);//读取  
        }  
    }  
}  
  
int main()  
{  
    while(~scanf("%d%d%d",&n,&m,&k))  
    {  
        int i,j;  
        for(i=0;i 
  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇poj 2133 Cow Imposters 下一篇UVa 562: Dividing Coins

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何理解c语言指针和 (2025-12-27 01:19:11)
·为什么C标准库没有链 (2025-12-27 01:19:08)
·玩转C语言和数据结构 (2025-12-27 01:19:05)
·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)