日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TJU1031

發(fā)布時(shí)間:2023/12/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TJU1031 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
直接模擬做。棋盤共有(10*10*4)^2=160000種狀態(tài),循環(huán)160000次以后還沒相遇就認(rèn)為無解了。
代碼方面么……自己喜歡設(shè)計(jì)點(diǎn)class,估計(jì)看上去好理解一些哈~~
#include<iostream>
using?namespace?std;

enum?Direction{North,East,South,West};
typedef?
struct{int?x,y;Direction?d;}Point;
class?Map
{
public:
????Map();
????
int?meet();
????
void?move();
????
int?seconds;
private:
????
int?item[10][10];
????Point?Cat,Mouse;
????
void?Fill(char?s,int?x,int?y);
????
int?movable(Point&?pos);
}
;
int?main()
{
????
int?data;
????cin
>>data;
????Map
*?m;
????
while(data--?>?0)
????
{
????????m
=new?Map();
????????
while(!m->meet())
????????
{
????????????m
->move();
????????????
if(m->seconds>160000l)
????????????
{
????????????????m
->seconds?=?-1;
????????????????
break;
????????????}

????????}

????????cout
<<m->seconds<<endl;
????}

????
return?0;
}

Map::Map()
{
????
char?s[10];
????
int?count1,count2;
????
for(count1=0;count1<10;count1++)
????
{
????????cin
>>s;
????????
for(count2=0;count2<10;count2++)
????????????Fill(s[count2],count1,count2);
????}

????seconds?
=?0;
????Cat.d?
=?Mouse.d?=?North;
}

int?Map::meet()
{return?(Cat.x==Mouse.x?&&?Cat.y==Mouse.y);}
void?Map::Fill(char?s,int?x,int?y)
{
????
switch(s)
????
{
????
case?'*':?item[x][y]=0;break;
????
case?'.':?item[x][y]=1;break;
????
case?'C':?item[x][y]=1;Cat.x=x,Cat.y=y;break;
????
case?'M':?item[x][y]=1;Mouse.x=x,Mouse.y=y;break;
????}

}

void?Map::move()
{
????
if(!movable(Cat))?Cat.d=(Direction)((Cat.d+1)%4);
????
if(!movable(Mouse))?Mouse.d=(Direction)((Mouse.d+1)%4);
????seconds
++;
}

int?Map::movable(Point&?pos)
{
????
switch(pos.d)
????
{
????
case?North:
????????
if(0!=pos.x?&&?item[pos.x-1][pos.y]){pos.x--;return?1;}
????????
break;
????
case?East:
????????
if(9!=pos.y?&&?item[pos.x][pos.y+1]){pos.y++;return?1;}
????????
break;
????
case?South:
????????
if(9!=pos.x?&&?item[pos.x+1][pos.y]){pos.x++;return?1;}
????????
break;
????
case?West:
????????
if(0!=pos.y?&&?item[pos.x][pos.y-1]){pos.y--;return?1;}
????????
break;
????}

????
return?0;
}

轉(zhuǎn)載于:https://www.cnblogs.com/FancyMouse/articles/243178.html

總結(jié)

以上是生活随笔為你收集整理的TJU1031的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。