RGB 4 RGBRGB RGBRGBRGB RGBWRGBWRGBW RGRGBRGGRBG RWW 3 RWWWWR RWWWWRW RWRWRW WWR 5 WWRWW WWWRWWRWR WWWWWWWW WRWRWRWR WRRWRWRWWW
她想要买一个美丽度大于1的手链,但是又不能只有一种颜色,怎么挑一个最好的呢?这个问题有点难想,现在她向你求助,希望你可以帮助她选择。
有多组测试数据,输入先给出参考手链(参考手链长度大于1),然后输入一个T(0
输出数据也有T行,每行输出,最大美丽度,和相应的手链。如果美丽度相同就输出手链最长的,看下面测试样例。
RGB 4 RGBRGB RGBRGBRGB RGBWRGBWRGBW RGRGBRGGRBG RWW 3 RWWWWR RWWWWRW RWRWRW WWR 5 WWRWW WWWRWWRWR WWWWWWWW WRWRWRWR WRRWRWRWWW
3 RGBWRGBWRGBW 1 RWWWWRW 2 WWWRWWRWR
#include
#include
#define maxn 10005
int lenx,p[maxn*100],cnt;
char x[maxn*100];
struct xuandx
{
char s[maxn*100];
int x; //美丽度
int len; //长度
}y[25];
void getp() //求出 p 数组
{
int i=0,j=-1;
p[i]=j;
while(iy[k].x||(y[i].x==y[k].x&&y[i].len>y[k].len)) //就是这里错了,才导致一直出问题,谨记
{
k=i;
}
}
printf("%d %s\n",y[k].x,y[k].s); //输出最优解
}
return 0;
}
可怜的公主又被魔王抓走了。魔王这次准备在T时刻与公主成亲,不过公主深信智勇的骑士肯定能将她救出。
已知:
公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输机用#表示,墙用*表示,平地用 . 表示。
骑士一进入时空传输机就会被转到另一层的相对位置(没有选择的余地),但如果被转到的位置是墙的话,那就会game over....
骑士在一层中只能前后左右移动,每移动一格花一个单位时间。层间的移动只能通过时空传输机(两个传输机不会在同一个位置的两层出现),且不需要任何时间。
输入有多组测试数据。
每个测试数据的前一行有三个整数N,M,T。 N,M迷宫的大小N*M(1 <= N,M <=10)。T如上所意。
接下去的前N*M表示迷宫的第一层的布置情况,后N*M表示迷宫第二层的布置情况。
如果骑士能够在T时刻能找到(找到就可以)公主就输出“YES”,否则输出“NO”。
1 4 2 .#.# *.#P
NO
这个题是简单的 bfs 但是自己在赛场上没做出来,原因不是自己不会做,而是前面的题目把所有的时间都浪费掉了,这个题已经没余地来做了...以后做题,遇到难题千万别钻牛角尖,可能后面的题目比前面的还要简单,固执害的只能是自己,倒不如让步一下,记住让步不是放弃,而是为了更好的前进
#include
#include
#include
using namespace std;
int v[2][15][15],n,m,t,kase;
int fy[4]={-1,0,0,1},fz[4]={0,-1,1,0};
char x[2][15][15];
struct mg
{
int x,y,z;
int t;
}site,temp;
void bfs()
{
queue q;
site.x=site.y=site.z=site.t=0;
q.push(site);//v[0][0][0]=1;
while(!q.empty())
{
site=q.front();q.pop();
if(site.t>t)
{
continue;
}
if(x[site.x][site.y][site.z]=='P')
{
kase=1;
return;
}
for(int i=0;i<4;++i)
{
int tx=site.x,ty=site.y+fy[i],tz=site.z+fz[i];
if(ty<0||ty>n-1||tz<0||tz>m-1)
{
continue;
}
if(x[tx][ty][tz]=='#')
{
tx=(tx+1)%2;
}
if(!v[tx][ty][tz]&&x[tx][ty][tz]!='*')
{
temp.x=tx;temp.y=ty;
temp.z=tz;temp.t=site.t+1;
q.push(temp);
v[tx][ty][tz]=1;
}
}
}
}
int main()
{
int i,j,k;
while(scanf("%d%d%d",&n,&m,&t)!=EOF)
{
for(i=0;i<2;++i)
{
getchar();
for(j=0;j
上次比赛算是给自己留下了比较深刻的记忆,因为自己多方面的原因,导致成绩很不理想,反思下来,主要有几点:
第一:知识,考察的内容掌握的不扎实,有时候按自己的理解,很可能会出问题,学习还是要虚心点,不能好高骛远,一步一步踏实点才是王道,
第二:粗心,至少有三道题,因为马虎,细节一直出问题,导致了无法弥补的后果,怪自己不够耐心,要是冷静思考问题,不应该出这么多细节错误,
第三:心态,在比赛中,不仅考察自己对知识的掌握程度,还是考察了一个人的全面素质,比如临场应变能力等,因为一个题的细节错误卡住了接近两个小时,不但严重影响了比赛的时间,还破坏了自己的心情,造成后面的题都没心思做了,这样很不好,自己还是不够沉稳,需要慢慢的改变
反思归反思,路还是要走的,一次小的挫折,永远不能阻挡追寻梦想的脚步,一次痛的教训,也许就是下一次成功的积淀,永远不会放弃,相信自己的努力!