faryou的博客 - 日记

faryou的博客 - 日记

用心记录生活点滴~~

题目: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语言的码风,对于STL库也不太了解,于是就。。。cout、cin用printf/puts、scanf代替,遇到需要用STL库里的队列之类就手搓
这几天干脆直接上C语言了,用的还是最古老的C89,大概长下面这样:

#include<stdio.h>
//变量、函数、对象声明
main(){
    //程序内容
    return 0;
}

最明显的特点就是没有了for循环,要用循环只能用while。其他的话,bool型在C89中也没有,包括三步运算符也用不了。。。
打算学习一下C语言的各个库,以后方便从算法转工程~


9月18号参加了CSP-J,个人感觉不错,第一次看懂整张卷子上的题目
这两天查了一下分数,91分,CCF官方的分数线在89分,所以不出意外的话应该能通过了。。。
现在正在备战复赛~


今天心血来潮建了日记站,希望可以坚持!