青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-72  評(píng)論-126  文章-0  trackbacks-0
http://acm.hdu.edu.cn/showproblem.php?pid=2678     Dota打怪
http://acm.hdu.edu.cn/showproblem.php?pid=1107     模擬RPG打戰(zhàn)
http://acm.hdu.edu.cn/showproblem.php?pid=2414     棋盤棋子移動(dòng)
http://acm.hdu.edu.cn/showproblem.php?pid=2258     連連游戲
http://acm.hdu.edu.cn/showproblem.php?pid=2240     飛行棋


http://acm.hdu.edu.cn/showproblem.php?pid=1691
   下象棋
要考慮好多好多東西阿

#include<stdio.h>
#include
<stdlib.h>

int map[11][11];
int kingx,kingy;


bool see()//能見到對(duì)方的王
{
    
int i;
    
for(i=kingx-1;i>=0;i--)
        
if(map[i][kingy])
            
break;
    
if(i==-1 || map[i][kingy]!=8)
        
return false;
    
return true;
}


bool King(int a,int b,int c,int d)
{
    
int dis;
    dis 
= abs(a-c) + abs(b-d);
    
if(dis!=1)
        
return false;//只能一動(dòng)一格


    
if(map[a][b]==8 && (d<4 || d>6 || c<1 || c>3))
        
return false;
    
if(map[a][b]==1 && (d<4 || d>6 || c<8 || c>10))
        
return false;//不能移出九宮格


    map[c][d] 
= map[a][b];
    map[a][b] 
= 0;
    
if(map[c][d]==1)
    {
        kingx 
= c;
        kingy 
= d;
    }
    
if(see())
        
return false;
    
return true;
}


bool Mandarin(int a,int b,int c,int d)
{
    
int disa,disb;
    disa 
= abs(a-c);
    disb 
= abs(b-d);
    
if(disa!=1 || disb!=1)//只能斜向移動(dòng)一個(gè)
        return false;
    
if(map[a][b]==9 && (d<4 || d>6 || c<1 || c>3))
        
return false;
    
if(map[a][b]==2 && (d<4 || d>6 || c<8 || c>10))//只能在九宮格
        return false;
    map[c][d] 
= map[a][b];
    map[a][b] 
= 0;
    
if(see())
        
return false;
    
return true;
}


bool Elephant(int a,int b,int c,int d)
{
    
int disa,disb,x,y;
    disa 
= abs(a-c);
    disb 
= abs(b-d);
    
if(disa!=2 || disb!=2)//只能斜向移動(dòng)兩個(gè)
        return false;
    
if(map[a][b]==10 && !(((c==1 || c==5)&& (d==3 || d==7)) || (c==3 && (d==1 || d==5 || d==9))))
        
return false;
    
if(map[a][b]==3 && !(((c==6 || c==10)&& (d==3 || d==7)) || (c==8 && (d==1 || d==5 || d==9))))//只能在這幾個(gè)位子
        return false;
    x 
= (a+c)/2;
    y 
= (b+d)/2;
    
if(map[x][y])
        
return false;//象腳
    map[c][d] = map[a][b];
    map[a][b] 
= 0;
    
if(see())
        
return false;
    
return true;
}


bool Knight(int a,int b,int c,int d)
{
    
int dir[][2]={{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1}};
    
int majiao[][2]={{0,1},{0,-1},{0,1},{0,-1},{1,0},{1,0},{-1,0},{-1,0}};
    
int i;
    
for(i=0;i<8;i++)
    {
        
if(a+dir[i][0]==&& b+dir[i][1]==d)
        {
            
if(map[ a+majiao[i][0] ][ b+majiao[i][1] ])//馬腳
                return false;
            
break;
        }
    }
    
if(i==8)
        
return false;
    map[c][d] 
= map[a][b];
    map[a][b] 
= 0;
    
if(see())
        
return false;
    
return true;
}


bool Rook(int a,int b,int c,int d)
{
    
int i;
    map[c][d] 
= map[a][b];
    map[a][b] 
= 0;
    
if(a==c)//橫向移動(dòng)
    {
        
if(b>d)
            b
^=d^=b^=d;
        
for(i=b+1;i<d;i++)
            
if(map[a][i])//中間不能有其他棋子
                break;
        
if(i!=d)
            
return false;
        
if(see())
            
return false;
        
return true;
    }
    
else if(b==d)
    {
        
if(a>c)
            a
^=c^=a^=c;
        
for(i=a+1;i<c;i++)
            
if(map[i][b])
                
break;
        
if(i!=c)
            
return false;
        
if(see())
            
return false;
        
return true;
    }
    
else
        
return false;
}


bool Cannons(int a,int b,int c,int d)
{
    
int i,cnt=0;
    
int k = map[c][d];
    map[c][d] 
= map[a][b];
    map[a][b] 
= 0;
    
if(a==c)
    {
        
if(b>d)
            b
^=d^=b^=d;
        
for(i=b+1;i<d;i++)
            
if(map[a][i])
                cnt 
++;
        
if(k==0 && cnt || k && cnt!=1)//吃子中間要有一個(gè),移動(dòng)的話中間沒有
            return false;
        
if(see())
            
return false;
        
return true;
    }
    
else if(b==d)
    {
        
if(a>c)
            a
^=c^=a^=c;
        
for(i=a+1;i<c;i++)
            
if(map[i][b])
                cnt 
++;
        
if(k==0 &&cnt || k && cnt!=1)
            
return false;
        
if(see())
            
return false;
        
return true;
    }
    
else
        
return false;
}


bool Pawns(int a,int b,int c,int d)
{
    
int dis;
    dis 
= abs(a-c) + abs(b-d);
    
if(dis!=1)
        
return false;
    
int k = map[a][b];
    map[c][d] 
= map[a][b];
    map[a][b] 
= 0;
    
if(k==14)
    {
        
if(a<6 && (a>|| d!=b) || a>c)//過(guò)河前不能左右移動(dòng),且不能退后
            return false;
    }
    
else
    {
        
if(a>5 && (a<|| b!=d) || a<c)
            
return false;
    }
    
if(see())
        
return false;
    
return true;
}


bool move(int a,int b,int c,int d,int turn)
{
    
if(map[a][b]<=turn*7 || map[a][b]>turn*7+7)
        
return false;
    
if(map[a][b]==1 || map[a][b]==8)
        
return King(a,b,c,d);
    
else if(map[a][b]==2 || map[a][b]==9)
        
return Mandarin(a,b,c,d);
    
else if(map[a][b]==3 || map[a][b]==10)
        
return Elephant(a,b,c,d);
    
else if(map[a][b]==4 || map[a][b]==11)
        
return Knight(a,b,c,d);
    
else if(map[a][b]==5 || map[a][b]==12)
        
return Rook(a,b,c,d);
    
else if(map[a][b]==6 || map[a][b]==13)
        
return Cannons(a,b,c,d);
    
else
        
return Pawns(a,b,c,d);
}


bool same(int x,int y)//吃到自己的棋子
{
    
if(x==0)
        
return false;
    
if(y==0)
        
return true;
    
if(0<x&&x<8&&0<y&&y<8 || 7<x&&x<15&&7<y&&y<15)
        
return false;
    
return true;
}


int main()
{
    
int T,n,i,j,turn,ill,K=1;
    scanf(
"%d",&T);
    
while(T--)
    {
        
for(i=1;i<=10;i++)
            
for(j=1;j<=9;j++)
            {
                scanf(
"%d",&map[i][j]);
                
if(map[i][j]==1)
                {
                    kingx 
= i;
                    kingy 
= j;
                }
            }
        scanf(
"%d%d",&n,&turn);//1 big      0 small
        ill = 0;
        
for(i=1;i<=n;i++)
        {
            
int a,b,c,d;
            scanf(
"%d%d%d%d",&a,&b,&c,&d);
            
if(!ill)
            {
                
if(a<=0 || a>10 || c<=0 || c>10 || b<=0 || b>9 || d<=0 || d>9)//出界
                    ill = i;
                
if(i!=&& (map[c][d]==1 || map[c][d]==8))//吃王
                    ill = i+1;
                
if(!same(map[a][b],map[c][d]) || !move(a,b,c,d,turn))//吃到自己棋子        非法移動(dòng)
                    ill = i;
                turn 
^= 1;
            }
        }
        printf(
"Case %d: ",K++);
        
if(ill)
            printf(
"Illegal move on step %d\n",ill);
        
else
            puts(
"Legal move");
    }
    
return 0;
}



http://acm.hdu.edu.cn/showproblem.php?pid=2678     Dota打怪
http://acm.hdu.edu.cn/showproblem.php?pid=1107     模擬RPG打戰(zhàn)
http://acm.hdu.edu.cn/showproblem.php?pid=2414     棋盤棋子移動(dòng)
http://acm.hdu.edu.cn/showproblem.php?pid=2258     連連游戲
http://acm.hdu.edu.cn/showproblem.php?pid=2240     飛行棋
posted on 2009-03-19 14:18 shǎ崽 閱讀(458) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产成人精品视频| 欧美日韩在线亚洲一区蜜芽| 亚洲视频一区| 欧美电影免费| 久久免费视频在线观看| 亚洲午夜小视频| 亚洲精品日日夜夜| 国产真实久久| 国产精一区二区三区| 欧美日韩亚洲一区三区| 欧美成人亚洲| 蜜桃av一区二区三区| 久久久99国产精品免费| 亚洲欧美欧美一区二区三区| 一本久道久久综合狠狠爱| 亚洲第一区在线观看| 久久夜色精品国产亚洲aⅴ| 先锋影音久久久| 亚洲综合精品| 亚洲在线视频观看| 一区二区三区产品免费精品久久75| 亚洲高清久久| **网站欧美大片在线观看| 国外成人在线视频网站| 国产亚洲欧美日韩一区二区| 国产免费成人在线视频| 国产精品香蕉在线观看| 国产精品国产三级国产aⅴ入口| 欧美人与性动交a欧美精品| 欧美国产日本韩| 欧美精品亚洲一区二区在线播放| 欧美aa国产视频| 欧美激情综合色| 欧美日本二区| 欧美午夜不卡影院在线观看完整版免费| 欧美激情精品久久久久久久变态| 欧美1区视频| 欧美人在线观看| 欧美视频免费在线观看| 国产精品草莓在线免费观看| 国产精品二区二区三区| 国产精品视频区| 国产午夜亚洲精品羞羞网站| 韩日午夜在线资源一区二区| 在线观看不卡| 亚洲精品久久久久久久久| 日韩小视频在线观看| 亚洲视频大全| 欧美在线观看www| 久久躁日日躁aaaaxxxx| 亚洲成在人线av| 日韩午夜视频在线观看| 亚洲视频自拍偷拍| 久久超碰97中文字幕| 美国成人直播| 欧美日韩午夜精品| 国产伦精品一区二区三区免费迷 | 欧美 日韩 国产一区二区在线视频| 老**午夜毛片一区二区三区| 亚洲第一在线| 亚洲视频在线一区观看| 欧美在线www| 欧美肥婆在线| 国产精品天美传媒入口| 红桃视频成人| 国产精品99久久久久久宅男| 欧美一区二区精品久久911| 免费看精品久久片| 日韩一级网站| 久久精品人人做人人爽| 欧美激情亚洲激情| 国产欧美日本| 亚洲美女啪啪| 久久精品视频va| 亚洲理伦电影| 久久国产一区| 欧美亚州在线观看| 永久域名在线精品| 亚洲自拍偷拍福利| 欧美电影免费观看高清完整版| 一本色道久久综合亚洲精品小说| 久久精品亚洲热| 欧美日韩在线免费| 在线欧美日韩国产| 欧美一级片久久久久久久| 亚洲国产精品一区二区www在线 | 狠狠久久亚洲欧美| 一区二区日韩| 欧美h视频在线| 亚洲一区二区在线观看视频| 免费观看久久久4p| 国产拍揄自揄精品视频麻豆| 99热这里只有成人精品国产| 久久一区二区三区av| 亚洲视频免费在线| 欧美激情综合网| 激情久久影院| 欧美一区二区三区在| 亚洲精品综合久久中文字幕| 久久亚洲私人国产精品va| 国产欧美一区二区色老头| 亚洲图片在区色| 欧美黄色影院| 久久久国产精彩视频美女艺术照福利| 欧美视频在线观看一区| 亚洲麻豆一区| 欧美激情乱人伦| 久久中文久久字幕| 国产一区二区三区av电影| 亚洲欧美在线免费观看| 99国内精品久久| 欧美精品一卡| 亚洲人成欧美中文字幕| 蜜臀久久99精品久久久久久9| 欧美在线高清| 国产一区二区三区久久久久久久久| 午夜精品在线观看| 99精品热视频只有精品10| 欧美久久久久久蜜桃| 亚洲精品国精品久久99热一| 欧美大片91| 老司机午夜精品| 最新日韩中文字幕| 欧美国产精品v| 蜜臀av一级做a爰片久久| 亚洲大片在线| 亚洲成色999久久网站| 美日韩丰满少妇在线观看| 亚洲国产91| 亚洲国产日韩一级| 欧美激情精品久久久六区热门| 日韩午夜免费| 99精品国产福利在线观看免费| 欧美日韩免费在线观看| 亚洲视频在线一区观看| 在线一区亚洲| 国产美女诱惑一区二区| 久久久久久久97| 久久午夜电影网| 亚洲精品乱码久久久久久按摩观| 亚洲片区在线| 欧美视频成人| 久久精品国产99| 久久久噜久噜久久综合| 亚洲黄色在线视频| 亚洲精品乱码久久久久久黑人| 欧美日韩一视频区二区| 欧美一区二区国产| 久久国产日韩欧美| 亚洲日韩成人| 在线亚洲伦理| 韩国自拍一区| 亚洲日本理论电影| 国产精品不卡在线| 久久久久久综合| 欧美国产激情二区三区| 亚洲一区二区三区四区五区黄| 亚洲欧美日本伦理| 亚洲电影在线| 在线一区二区三区四区五区| 国产无遮挡一区二区三区毛片日本| 蜜臀91精品一区二区三区| 欧美激情精品久久久久久| 午夜精品影院| 麻豆av福利av久久av| 亚洲视频欧洲视频| 久久精品72免费观看| 99视频超级精品| 欧美一级在线亚洲天堂| 亚洲精品视频在线播放| 亚洲一区欧美| 亚洲啪啪91| 亚洲欧美清纯在线制服| 91久久精品日日躁夜夜躁国产| 亚洲午夜国产成人av电影男同| 精品福利免费观看| 一区二区三区欧美日韩| 在线成人h网| 亚洲午夜av电影| 亚洲日本欧美在线| 欧美亚洲一区二区在线| 99热在线精品观看| 久久精品视频在线播放| 亚洲香蕉成视频在线观看| 久久亚洲图片| 欧美中文字幕在线视频| 欧美精品videossex性护士| 久久精品伊人| 国产精品v欧美精品v日韩精品 | 欧美精品日韩| 久久中文字幕一区| 国产精品久久久久久久久久久久久 | 国产麻豆精品久久一二三| 亚洲国产精品精华液2区45| 国产偷国产偷亚洲高清97cao| 亚洲精品视频在线看| 激情综合自拍| 午夜精品一区二区三区在线视 | 欧美一区激情| 亚洲欧美一区二区精品久久久|