9-4 soldier.c

 #include <stdio.h>
 #define MAXN 21
  };
 int n, m, x, y;    //n,m为B点的行列坐标位置,x,y为马的坐标位置
 ] = { -, -, , , , , -, - };
 ] = { , , , , -, -, -, - };
 void horse() //初始化马和其控制点坐标位置
 {
    int i;
    chessboard[x][y] = -;    //标记马的位置
    ; i < ; i++)    //标记马下一步的位置
    {
        && x + dx[x] <= n) && (y + dy[i] >= )
          && (y + dy[i]) <= m)
          chessboard[x + dx[i]][y + dy[i]] = -;
    }
 }
 void search() //逐步搜寻出路
 {
    int i, j;
    ; i <= n; i++)    //扫描第0列的各行
    {
       ] != -)    //若没有障碍
          chessboard[i][] = ;    //设置该位置可走路径数为1
       else
          break;
    }
    ; i <= m; i++)    //扫描第0行的每列
    {
       ][i] != -)    //若不是马的控制点
          chessboard[][i] = ;    //设置该位置可走路径数为1
       else
          break;
    }
    ; i <= n; i++)    //扫描各行各列
    {
       ; j <= m; j++)
       {
          )    //若该位置不是马的控制点
          {
             ][j] != -) && (chessboard[i][j - ] != -))    //上面和左边也不是马的控制点
                chessboard[i][j] = chessboard[i - ][j] + chessboard[i][j - ];    //将上面和左边的路径进行累加
             ][j] == -) && (chessboard[i][j - ] != -))    //若上面有马控制点,而左边无马控制点
                chessboard[i][j] = chessboard[i][j - ];    //保存左边路径到到当前位置
             ][j] != -) && (chessboard[i][j - ] == -))    //若上面无马控制点,而左边有马控制点
                chessboard[i][j] = chessboard[i - ][j];    //保存上面路径到当前位置
             ][j] == -) && (chessboard[i][j - ] == -))    //若上面和左边都有马的控制点
                chessboard[i][j] = ;    //当前位置无通路
          }
       }
    }
 }
 int main()
 {
    int i, j;
    FILE *fp1, *fp2;
    if ((fp1 = fopen("soldier.in", "r")) == NULL)
    {
       printf("不能打开文件!\n");
       exit();
    }
    fscanf(fp1,"%d%d%d%d", &n, &m, &x, &y);
    fclose(fp1);
    horse();    //初始化马及其下一步的位置
    search();
    if ((fp2 = fopen("soldier.out", "w")) == NULL)
    {
       printf("不能打开文件!\n");
       exit();
    }
    printf("%d\n", chessboard[n][m]);
    fprintf(fp2,"%d\n",chessboard[n][m]);
    fclose(fp2);
    getch();
    ;
 }

9-5 isbn.c

 #include <stdio.h>
 int main()
 {
    ] = { "0123456789X" };
    ];
    int i, j, sum;
    FILE *fp1, *fp2;
    if ((fp1 = fopen("isbn.in", "r")) == NULL)
    {
       printf("不能打开文件!\n");
       exit();
    }
    fgets(str, , fp1); //从文件中读取数据
    fclose(fp1);    //关闭文件
    sum = ;
    j = ;
    ; i < ; i++) //计算总和
    {
        && i != )
          sum += (str[i] - ') * j++;
    }
    sum %= ; //求模
    if ((fp2 = fopen("isbn.out", "w")) == NULL)
    {
       printf("不能打开文件!\n");
       exit();
    }
    ] == table[sum]) //校验码正确
    {
       fputs("Right", fp2); //输出到文件
       printf("Right\n");
    }
    else //校验码错误
    {
       str[] = table[sum]; //保存正确校验码
       fputs(str, fp2); //输出正确的ISBN到文件
       printf("%s\n", str);
    }
    fclose(fp2); //关闭文件
    getch();
    ;
 }

9.1 NOIP普及组试题精解(2)的更多相关文章

  1. 9.1 NOIP普及组试题精解(3)

    9-6 seat.c #include <stdio.h> #define MAXN 1001 void swap(int *a, int *b) //交换数据 { int t; t = ...

  2. 9.1 NOIP普及组试题精解(1)

    9-1 series1.c #include <stdio.h> int main() { float s=0.0,k; int n; printf("输入数字k(1~15):& ...

  3. 9.2 NOIP提高组试题精解(2)

    9-18 fruit.c #include <stdio.h> #define MAXN 10000 int Queue1[MAXN], Queue2[MAXN]; void Insert ...

  4. 9.2 NOIP提高组试题精解(1)

    9-16 poise.c #include <stdio.h> #define MAXN 1001 int main() { ], flag[MAXN] = { }; //保存6种砝码的数 ...

  5. 2016.10.6初中部上午NOIP普及组比赛总结

    2016.10.6初中部上午NOIP普及组比赛总结 中了病毒--病毒--病毒-- 进度: 比赛:AC+0+0+20=120 改题:AC+0+AC+20=220 Stairs 好--简--单!递推就过了 ...

  6. 2016.8.15上午纪中初中部NOIP普及组比赛

    2016.8.15上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1333 这次比赛不怎么好,因为这套题目我并不是很擅长. 可同学们 ...

  7. 2016.9.15初中部上午NOIP普及组比赛总结

    2016.9.15初中部上午NOIP普及组比赛总结 2016.09.15[初中部 NOIP普及组 ]模拟赛 又翻车了!表示时超和空超很可恨! 进度 比赛:AC+0+0+20=120 改题:AC+80+ ...

  8. 2016.9.10初中部上午NOIP普及组比赛总结

    2016.9.10初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1340 好不爽!翻车了!不过排名差不多在中间偏上一点, 还好不是 ...

  9. 2016.9.3初中部上午NOIP普及组比赛总结

    2016.9.3初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1339 这次真爽,拿了个第四!(我还被班主任叫过去1小时呢!) 进 ...

随机推荐

  1. js 查找一串字符串中一段字符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. grep 精确匹配

    使用grep实现精确过滤的五种方法 (1)当被过滤的内容占据一行时 [root@MySQL scripts]# cat oldboy.log        200 0200 2000 [root@My ...

  3. 使用Python+Selenium过程中中常见的问题汇总

    1.提示:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 542: ordinal not in range( ...

  4. Android设计中的尺寸问题

    Android把屏幕大小分成四种:small, normal, large, xlarge; 屏幕密度分成:low(ldpi), medium(mdpi), high(hdpi), extra hig ...

  5. Koa2 + Mongoose + Log4js 持久化日志

    代码地址如下:http://www.demodashi.com/demo/12466.html  之前做的项目是采用 Express 框架进行搭建的,其中的日志管理采用了 winston + Post ...

  6. VueJS构造器:new Vue({})

    构造器 每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例来启动的: var vm = new Vue({ // 选项 }) 属性与方法 每个 Vue 实例都会代理其 dat ...

  7. 各个DDR对比

    一.容量和封装相关 (1)逻辑Bank数量增加 DDR2 SDRAM中有4Bank和8Bank的设计,而DDR3起始的逻辑Bank是8个,另外还为未来的16个逻辑Bank做好了准备. (2)封装(Pa ...

  8. C++ Singleton + MultiThread

    #include <iostream> #include <mutex> using namespace std; template <class T> class ...

  9. Android 开发小工具之:Tools 属性 (转)

    Android 开发小工具之:Tools 属性 http://blog.chengyunfeng.com/?p=755#ixzz4apLZhfmi 今天来介绍一些 Android 开发过程中比较有用但 ...

  10. ubuntu apt 主要命令及参数

    1. apt-cache search package 搜索安装包 2. apt-cache search all 搜索所有安装包 3. apt-cache show package 显示安装包信息 ...