第一周任务 - Virtual Judge
分析:这道题开始想错了,所以错了一次。后来又仔细读了一遍题,才发现,要是最长的那个排序子数组,所以第二次就做出来了,它其实应该分为两大块,第一块找左边的起点,第二块找右边的终点,我把找起点和终点又分为了两步,起点的第一步是从头开始找到第一个不一样的数,第二步是以找到的位置向前找两组数的这个位置相同的数且前面小于后面,终点同理。
代码如下:
#include <stdio.h>
#include <string.h>
int a1[200005],a2[200005];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a1[i]);
for(int i=0;i<n;i++)
scanf("%d",&a2[i]);
int bj1,bj2;
bj1=0;
bj2=n-1;
for(int i=0;i<n;i++)
{
if(a1[i]!=a2[i])
{
bj1=i;
break;
}
}
for(int i=bj1-1;i>=0;i--)
{
if(a1[i]!=a2[i]||a2[i]>a2[i+1])
{
bj1=i+1;
break;
}
if(i==0&&a2[i]<=a2[i+1])
{
bj1=0;
break;
}
}
for(int i=n-1;i>=0;i--)
{
if(a1[i]!=a2[i])
{
bj2=i;
break;
}
}
for(int i=bj2+1;i<n;i++)
{
if(a1[i]!=a2[i]||a2[i]<a2[i-1])
{
bj2=i-1;
break;
}
if(i==n-1&&a2[i]>=a2[i-1])
{
bj2=i;
break;
}
}
bj1+=1;
bj2+=1;
printf("%d %d\n",bj1,bj2);
}
return 0;
}
第一周任务 - Virtual Judge
分析:这道题主要是题目读明白,它其实有点像匹配题,但是也不是完全是,它主要是对'_'做操作,因为它要满足"^^"或"^_^",那也就是说如果我现在的位置是'_'而且下一个也是'_',那就要做一次操作,但是要注意的就是开头和结尾,如果开头或者结尾是'_',那么也要做操作,然后就是对'^'的处理,其实对这个的处理只有一个,那就是当整个字符串只有一个字符,且这个字符为'^'是做一次操作就行。
代码如下:
#include <stdio.h>
#include <string.h>
int a1[200005],a2[200005];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
char s[105]={0};
scanf("%s",s);
int bj=0;
if(s[0]=='_')
bj=1;
int len=strlen(s);
for(int i=0;i<len;i++)
{
if(s[i]=='_'&&s[i+1]=='_')
bj+=1;
}
if(s[len-1]=='_')
bj+=1;
if(len==1&&s[0]=='^')
bj+=1;
printf("%d\n",bj);
}
return 0;
}
第一周任务 - Virtual Judge
分析:这道题开始理解错题意了,后来想明白了之后就知道是个什么事了,它的题目意思简单点讲就是两个坐标格子之间不能共线,那它其实就三种可能,2,3,4。为什么是2,3,4呢?很简单,2就是当两个格子中其中任意一个格子或者两个格子的位置在四个角落上的时候,要防止共线的就只有两条边,所以是2;3就是当两个格子中其中任意一个格子或者两个格子的位置在边线上的时候,它有三条边暴露在外面,所以是3;那么其它的就是就是4,因为四条边线都暴露在外面。我建议的顺序是2,3,4if....else...下去,写的条件语句会少一点。
代码如下:
#include <stdio.h>
#include <string.h>
#include <math.h>
int a1[200005],a2[200005];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
int x1,x2,y1,y2;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
int bj;
if((x1==1&&y1==1)||(x1==n&&y1==m)
||(x2==1&&y2==1)||(x2==n&&y2==m)
||(x1==1&&y1==m)||(x1==n&&y1==1)
||(x2==1&&y2==m)||(x2==n&&y2==1))
bj=2;
else if(x1==1||x1==n
||y1==1||y1==m
||x2==1||x2==n
||y2==1||y2==m)
bj=3;
else
bj=4;
printf("%d\n",bj);
}
return 0;
}
聊天室项目:
这两天聊天室项目还推进得挺顺利的,加了一点功能。
注册时选择头像,如下:
问题:也不知道是我的分辨率没有调好还是为什么,头像只能显示一部分。
加了查看个人资料功能,如下:
修改个人资料功能,如下:
上面的问题还是图片显现的问题,这个还得花时间搞一下,然后客户端之间的聊天也不太行。
添加好友的功能也完成了一点了,只是应该是我的线程没有处理好的问题,找好友能找到,但是加不上。
关于数据库,我添加了两个表,一共三个表,个人信息表,已经登录的账号的表,好友关系表。个人信息表主要是用于注册、主页的一些相对应的数据和修改个人信息那里;好友关系表主要是用于添加好友和搜索已经添加了好友那里;已经登录账号的表主要是为了避免重复登录。
总体来讲,这两天项目推进得还不错,有点进展,但是很多细节化的处理不行,经不起细推,这都得完善。