今天晚上终于把作业写完了。。。赶紧发个文记录一下
其实杭州的秋假早就开始了,但是感觉放了和没放没什么区别,还要准备CSP-J复赛……累心
肝完作业了!
首过洛谷绿题~
题目:https://www.luogu.com.cn/problem/P1189
代码:
#include<stdio.h>
int r,c,n,a,b,iq[1010];
char Map[55][55],input[6];
bool ans[55][55],flag[55][55][1010];
void dfs(int num,int x,int y){
if(flag[x][y][num]) return ;
if(num>=n){
ans[x][y]=true;
return ;
}
int i=x,j=y;
if(iq[num]==1) while(1){
j++;
if(j>=c || Map[x][j]=='X') break;
dfs(num+1,x,j);
}
if(iq[num]==2) while(1){
i++;
if(i>=r || Map[i][y]=='X') break;
dfs(num+1,i,y);
}
if(iq[num]==3) while(1){
j--;
if(j<0 || Map[x][j]=='X') break;
dfs(num+1,x,j);
}
if(iq[num]==4) while(1){
i--;
if(i<0 || Map[i][y]=='X') break;
dfs(num+1,i,y);
}
flag[x][y][num]=true;
return ;
}
int main(){
scanf("%d%d",&r,&c);
for(int i=0;i<r;i++) for(int j=0;j<c;j++) ans[i][j]=false;
for(int i=0;i<r;i++) scanf("%s",Map[i]);
for(int i=0;i<r;i++) for(int j=0;j<c;j++) if(Map[i][j]=='*'){
a=i;
b=j;
}
scanf("%d",&n);
for(int i=0;i<r;i++) for(int j=0;j<c;j++) for(int k=0;k<n;k++) flag[i][j][k]=false;
for(int i=0;i<n;i++){
scanf("%s",input);
if(input[0]=='E') iq[i]=1;
if(input[0]=='S') iq[i]=2;
if(input[0]=='W') iq[i]=3;
if(input[0]=='N') iq[i]=4;
}
dfs(0,a,b);
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
if(Map[i][j]=='X') printf("X");
else if(ans[i][j]) printf("*");
else printf(".");
}
printf("\n");
}
return 0;
}
开心一整天~
出去走走散散心
今天国庆节,外面飘着丝丝的秋雨,秋风刮得很大
出门到小区里走了走,在秋风和秋雨中看看小区里高大的老树、老旧的房屋,以及穿小区而过的那条河,心中不免有一种苍桑之感。。。
还是要写作业。。。
从C++退化到C语言
本来呢,信奥比赛都采用C++,但是我习惯了C语言的码风,对于STL库也不太了解,于是就。。。cout、cin用printf/puts、scanf代替,遇到需要用STL库里的队列之类就手搓
这几天干脆直接上C语言了,用的还是最古老的C89,大概长下面这样:
#include<stdio.h>
//变量、函数、对象声明
main(){
//程序内容
return 0;
}
最明显的特点就是没有了for循环,要用循环只能用while。其他的话,bool型在C89中也没有,包括三步运算符也用不了。。。
打算学习一下C语言的各个库,以后方便从算法转工程~
CSP-J第一轮认证通过
9月18号参加了CSP-J,个人感觉不错,第一次看懂整张卷子上的题目
这两天查了一下分数,91分,CCF官方的分数线在89分,所以不出意外的话应该能通过了。。。
现在正在备战复赛~