• UVa 825 Walking on the Safe Side


    假期放松,做几道小题……

    这道题的输入比较不同:每行输入的数的个数是不确定的,所以要使用gets和sscanf();

    开始想偷懒,看了看Stainger大牛的输入也是这样,就没啥可说了,麻烦些就麻烦些;

    状态转移比较明显,递推可以解决,感觉这道题与其说是dp的,不如说是用来练习输入的;

    1WA,原因是最后一组输出后不要留空行(留换行);

    使用了 OIer 常用的写法:把程序每一部分独立起来,确实是方便了调试(在递推时 i 没有初始化,找了很久,最后一块一块注释,发现的)。

    # include <stdio.h>
    # include <string.h>
    
    # define N 105
    
    int row, col, f[N][N];
    char t[N], map[N][N];
    
    void read(void);
    void process(void);
    
    int main()
    {
        int T;
    
        gets(t);
        sscanf(t, "%d", &T);
        while (T--)
        {
            read();
            process();
            if (T != 0) putchar('\n');
        }
    
        return 0;
    }
    
    void read(void)
    {
        int i, j, x, k;
    
        gets(t);
        gets(t);
        sscanf(t, "%d%d", &row, &col);
        for (i = 1; i <= row; ++i)
        {
            for (j = 1; j <= col; ++j)
                map[i][j] = 0;
    
            gets(t);
            k = 0;
            while (t[k] && t[k]==' ') ++k;
            while (t[k] && t[k]!=' ') ++k;
            while (t[k] && t[k]==' ') ++k;
            while (t[k])
            {
                sscanf(t+k, "%d", &x);
                map[i][x] = 1;
                while (t[k] && t[k]==' ') ++k;
                while (t[k] && t[k]!=' ') ++k;
            }
        }
    }
    
    void process(void)
    {
        int i, j;
    
        f[1][1] = 1;
        for (j = 2; j <= col; ++j)
        {
            if (map[1][j]) f[1][j] = 0;
            else f[1][j] = f[1][j-1];
        }
    
        for (i = 2; i <= row; ++i)
        {
            if (map[i][1]) f[i][1] = 0;
            else f[i][1] = f[i-1][1];
            for (j = 2; j <= col; ++j)
            {
                if (map[i][j]) f[i][j] = 0;
                else f[i][j] = f[i-1][j] + f[i][j-1];
            }
        }
    
        printf("%d\n", f[row][col]);
    }
  • 相关阅读:
    一份面试题+整理的答案
    java获取本机IPV4地址,非127.0.0.1
    List去重
    禁止iframe页面时产生历史记录
    js打开新窗口并且不被拦截
    ifream 跨域实现高度自适应
    css版tooltip
    jQuery遮罩插件 jQuery.blockUI.js
    SpringMVC 传递相同名称的参数
    SpringMVC接收List型参数
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2476769.html
Copyright © 2020-2023  润新知