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

隨筆-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)的話中間沒(méi)有
            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   博問(wèn)   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>
            久久美女性网| 欧美一区二区高清| 美女久久一区| 香港成人在线视频| 亚洲美女视频网| 激情欧美丁香| 国产区精品视频| 国产精品99免费看 | 久久国产欧美精品| 亚洲视频久久| 日韩一级大片在线| 亚洲激情二区| 欧美激情1区2区| 另类综合日韩欧美亚洲| 欧美一区永久视频免费观看| 亚洲午夜一区| 99综合视频| 亚洲美女黄色| 亚洲精品一区在线观看香蕉| 亚洲国产高潮在线观看| 1024成人| 在线不卡a资源高清| 国产最新精品精品你懂的| 国产女人aaa级久久久级| 国产精品推荐精品| 国产精品老牛| 国产精品男女猛烈高潮激情| 国产精品久久久久久久7电影| 欧美日韩另类字幕中文| 欧美日韩精品一区| 欧美色欧美亚洲高清在线视频| 欧美日韩mp4| 欧美日韩在线免费视频| 欧美午夜在线观看| 国产精品一区二区三区四区| 国产精品视频1区| 国产农村妇女精品一区二区| 国产日韩欧美电影在线观看| 国产综合香蕉五月婷在线| 激情亚洲一区二区三区四区| ●精品国产综合乱码久久久久| 在线免费观看一区二区三区| 在线精品国产欧美| 亚洲精品久久| 亚洲一区久久| 欧美中文字幕| 欧美成人a∨高清免费观看| 亚洲成在人线av| 99re亚洲国产精品| 亚洲男人影院| 久久精品论坛| 欧美精品一区二区三| 欧美三级日本三级少妇99| 国产乱理伦片在线观看夜一区| 国产亚洲精品久久飘花| 在线日韩av片| 亚洲午夜久久久| 久久国产婷婷国产香蕉| 欧美+日本+国产+在线a∨观看| 亚洲激情一区| 午夜精品亚洲一区二区三区嫩草| 久久久国产一区二区三区| 欧美国产日本| 国产目拍亚洲精品99久久精品| 伊甸园精品99久久久久久| 99视频精品全部免费在线| 亚洲欧美视频在线观看视频| 免费影视亚洲| 在线亚洲国产精品网站| 久久国产精品72免费观看| 欧美福利网址| 国产视频久久久久久久| 日韩一级在线观看| 久久精品国产99精品国产亚洲性色 | 欧美激情麻豆| 国产欧美日韩视频| 亚洲精品国产精品乱码不99按摩 | 国产精品成人一区二区三区夜夜夜| 国产欧美日韩在线| 亚洲另类春色国产| 久久视频精品在线| 一区二区三区久久| 麻豆精品在线视频| 国产日产欧美a一级在线| 亚洲免费观看| 久久先锋影音av| 亚洲网站视频福利| 欧美fxxxxxx另类| 国产一区二区三区四区三区四| 日韩特黄影片| 蜜桃精品久久久久久久免费影院| 国产精品99久久99久久久二8 | 欧美黄色精品| 欧美一区二区视频网站| 欧美日韩亚洲系列| 亚洲欧洲精品一区二区三区不卡 | 欧美一级黄色网| 欧美日韩一区综合| 亚洲日本va午夜在线影院| 久久精品国产欧美亚洲人人爽| 夜夜爽av福利精品导航 | 欧美一区视频| 国产精品视频免费在线观看| 亚洲精品视频免费观看| 老司机午夜精品视频在线观看| 亚洲尤物精选| 欧美调教vk| 一区二区三区欧美日韩| 欧美激情一区二区三区在线视频观看| 午夜精品久久久久99热蜜桃导演| 欧美日韩一区在线视频| 99精品国产一区二区青青牛奶 | 欧美日韩ab| 日韩午夜激情av| 亚洲国产第一页| 你懂的国产精品| 91久久久久久| 亚洲国产欧美一区二区三区久久| 久久先锋影音| 亚洲国产成人精品女人久久久 | 国产精品久久久久久久久久尿 | 亚洲国产影院| 欧美jizzhd精品欧美巨大免费| 久久精品视频亚洲| 狠狠色伊人亚洲综合成人| 久久精品国产99精品国产亚洲性色 | 欧美一区二区免费观在线| 亚洲图中文字幕| 国产精品毛片| 午夜视频久久久| 午夜精品99久久免费| 国产区日韩欧美| 久久精品网址| 久久亚洲精品伦理| 亚洲欧洲精品一区二区| 亚洲黄色视屏| 欧美三级电影精品| 欧美亚洲免费在线| 欧美一区二区三区在线看| 国内精品国产成人| 欧美大尺度在线| 欧美大片在线观看| 亚洲一级二级| 欧美一区二区高清| 亚洲国产精品成人va在线观看| 亚洲成人在线免费| 久久久天天操| 91久久久久| 一本色道久久综合狠狠躁的推荐| 欧美色大人视频| 久久国产精品第一页| 久久男人av资源网站| 亚洲美女尤物影院| 亚洲一区亚洲| 在线国产精品播放| 日韩午夜电影av| 国产精品一区二区三区久久| 麻豆freexxxx性91精品| 欧美激情1区2区| 欧美一级午夜免费电影| 久久免费少妇高潮久久精品99| 99国产成+人+综合+亚洲欧美| 亚洲一区二区三区四区视频 | 久热精品视频在线| 一区二区三区日韩在线观看| 亚洲欧美日韩国产综合| 亚洲激情电影在线| 亚洲影视在线播放| 亚洲国产日韩一区| 中文国产亚洲喷潮| 亚洲第一成人在线| 中文av一区特黄| 亚洲高清色综合| 亚洲一区二区三区精品在线| 亚洲国产mv| 亚洲欧美制服另类日韩| 最新日韩欧美| 欧美影视一区| 亚洲婷婷国产精品电影人久久| 久久精品91久久久久久再现| 亚洲午夜电影在线观看| 久久午夜国产精品| 性欧美大战久久久久久久久| 欧美夫妇交换俱乐部在线观看| 欧美在线视频导航| 欧美日韩精品免费看| 欧美成年人在线观看| 国产欧美日韩视频一区二区三区| 亚洲国产一区二区视频| 含羞草久久爱69一区| 国产精品99久久久久久有的能看| 亚洲国产老妈| 欧美在线精品免播放器视频| 亚洲天堂网在线观看| 免费日韩精品中文字幕视频在线| 久久久精品一区二区三区| 国产精品成人一区二区艾草| 最新国产精品拍自在线播放| 亚洲第一精品福利| 欧美一区二区免费视频|