1.上午3个小时40分钟
上午没有刷啥题,毕竟第一次测试和第一次答辩,咱没见过世面,得好好准备一下,所以上午就复习了一下搜索算法,将前面做过的题思路过一遍,看看自己的每日总结,把代码的细节复习一遍,嗯...就是这些,效率有点低。
这是上午复习,重新敲的迷宫是否有路径出去的代码
//迷宫是否有出去的路径
#include<stdio.h>
int n,sx,sy,zx,zy,a[110][110],vis[110][110];
int d[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
int dfs(int x,int y)
{
vis[x][y]=1;
if(x==zx&&y==zy)
return 1;
for(int i=0;i<4;i++)
{
int dx=x+d[i][0];
int dy=y+d[i][1];
if(dx>=0&&dx<n&&dy>=0&&dy<n&&vis[dx][dy]==0&&a[dx][dy]==0)
{
vis[dx][dy]=1;
dfs(dx,dy);
}
}
}
int main()
{
int dfs(int x,int y);
scanf("%d",&n);
scanf("%d %d %d %d",&sx,&sy,&zx,&zy);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
int p=dfs(sx,sy);
if(p==1)
printf("yes");
else
printf("no");
return 0;
}
2.下午3个小时
做出了测试题组里的两道题,还有一题没有做出来。
CF6A Triangle - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路:如果最短的两根木棒之和大于最长的木棒,那一定大于第二根木棒,所以只需要判断第四根木棒和第三根木棒的长度之和与第二根木棒的关系。同理,如果第四根木棒和第二根木棒的长度之和大于第一根,那么第二根木棒和第三根木棒的长度之和一定大于第一根,所以只需要判断第二根木棒与第三根木棒的长度之和与第一根木棒的关系。(注:思路中木棒的顺序是排序后的顺序)
代码实现
#include<stdio.h>
int main()
{
int i,j,t,a[4];
for(i=0; i<4; i++)
scanf("%d",&a[i]);
for(i=0;i<4;i++)//给四根木棒分出大小
{
for(j=i+1;j<4;j++)
{
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
if(a[0]<a[1]+a[2]||a[0]<a[1]+a[3]||a[0]<a[1]+a[3]||a[1]<a[2]+a[3])//
printf("TRIANGLE");
else if(a[0]==a[1]+a[2]||a[0]==a[1]+a[3]||a[0]==a[1]+a[3]||a[1]==a[2]+a[3])
printf("SEGMENT");
else
printf("IMPOSSIBLE");
return 0;
}
CF9A Die Roll - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路:输入两个数为小Y和小W的得分,然后比较得出大小,通过较大的数的到小D抛出哪些点才能够胜利,从而得出小D获胜的概率,对输出的要求可以次昂县看代码。
代码实现
#include<stdio.h>
int main()
{
int a,b,c,d,t;
scanf("%d %d",&a,&b);
if(a<b)
{
t=a;
a=b;
b=a;
}
c=7-a;
if(c%2==0&&c!=6)
printf("%d/3",c/2);
else if(c==3)
printf("1/2");
else if(c==6)
printf("1/1");
else
printf("%d/6",c);
return 0;
}
3.晚上3个小时
答辩,然后一直在做测试的第三个题目,代码输出样例没错,我自己想的例子输出也没有错,可能是我没有理解题目的意思吧,没有做出来。