9-6 seat.c

 #include <stdio.h>
 #define MAXN 1001
 void swap(int *a, int *b)    //交换数据
 {
    int t;
    t = *a;
    *a = *b;
    *b = t;
 }
 int main()
 {
    FILE *fp1, *fp2;
    int row[MAXN], col[MAXN], temp[MAXN];
    int m, n, k, l, d;    //m行n列,k条横向通道,l条纵向通道,d对同学上课说话
    int x1, y1, x2, y2;    //两个相互说话同学的位置
    int i, j;
    if ((fp1 = fopen("seat.in", "r")) == NULL)
    {
       printf("不能打开文件!\n");
       exit();
    }
    fscanf(fp1, "%d%d%d%d%d\n", &m, &n, &k, &l, &d);
    ; i <= m; i++)    //设置不插入横向通道
       row[i] = ;
    ; i <= n; i++)    //设置不插入纵向通道
       col[i] = ;
    ; i < d; i++)    //读入文件中每行的数据,统计在每行、每列添加通道可以分割的学生数
    {
       fscanf(fp1, "%d%d%d%d", &y1, &x1, &y2, &x2);    //读入要说话的两个坐标位置
       if (x1 == x2)    //若在同一列
       {
          if (y1 > y2)
             swap(&y1, &y2);    //交换列号,使低列号排在前面
          row[y1]++;    //在y1位置增加一条横向通道分隔同一列的同学
       } else if (y1 == y2)    //在同一行
       {
          if (x1 > x2)
             swap(&x1, &x2);    //交换行号,使低行号排在前面
          col[x1]++;    //在x1位置增加一条纵向通道分隔同一行的同学
       }
    }
    fclose(fp1);    //关闭文件
    ; i <= m; i++)    //temp中保存行号,准备排序
       temp[i] = i;
    ; i < m; i++)    //对横向通道分隔说话学生对数进行排序
       ; j <= m; j++)
          if (row[i] < row[j])    //第i行设通道分隔说话学生少于第j行
          {
             swap(&row[i], &row[j]);    //交换通道位置
             swap(&temp[i], &temp[j]);    //交换行号
          }
    ; i < k; i++)    //对前k条横向通道进行排序
       ; j <= k; j++)
          if (temp[i] > temp[j])    //使低行号排在前面
             swap(&temp[i], &temp[j]);
    if ((fp2 = fopen("seat.out", "w")) == NULL)
    {
       printf("不能打开文件!\n");
       exit();
    }
    ; i <= k; i++)    //输出横向通道位置
    {
       printf(" %d", temp[i]);
       fprintf(fp2, " %d", temp[i]);
    }
    printf("\n");
    fprintf(fp2, "\n");
    ; i <= n; i++)    //将列号保存到temp数组中,准备排序
       temp[i] = i;
    ; i < n; i++)    //对纵向通道分隔说话学生对数进行排序
       ; j <= n; j++)
          if (col[i] < col[j])
          {
             swap(&col[i], &col[j]);    //交换通道位置
             swap(&temp[i], &temp[j]);    //交换列号
          }
    ; i < l; i++)    //对前L条纵向通道进行排序
       ; j <= l; j++)
          if (temp[i] > temp[j])    //使低列号排在前面
             swap(&temp[i], &temp[j]);
    ; i <= l; i++)    //输出纵向通道
    {
       printf(" %d", temp[i]);
       fprintf(fp2, " %d", temp[i]);
    }
    fprintf(fp2, "\n");
    fclose(fp2);
    getch();
    ;
 }

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

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

    9-4 soldier.c #include <stdio.h> #define MAXN 21 }; int n, m, x, y; //n,m为B点的行列坐标位置,x,y为马的坐标位置 ...

  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. Win7如何修复开机画面

    将下面文件保存为"修复Win7开机画面.bat"双击运行即可   bcdedit /set {current} locale zh-CN    

  2. nginx如何设置防盗链

    关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链! 一般,我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显示,但是您如果通 ...

  3. 使用 mybatis + flying + 双向相关建模 的电商后端

    代码地址如下:http://www.demodashi.com/demo/12468.html mybatis.flying 众所周知,mybatis 虽然易于上手,但放到互联网环境下使用时,不可避免 ...

  4. [原创] 浅谈开源项目Android-Universal-Image-Loader(Part 3.1)

    最近,总算有时间去做些平时喜欢而没空去做的事情.一直觉得项目中使用的Image Loader适用性不强,昨晚在github随便逛逛,发现一个开源项目Android-Universal-Image-Lo ...

  5. Leetcode Array 4 Median of Two Sorted Arrays

    做leetcode题目的第二天,我是按照分类来做的,做的第一类是Array类,碰见的第二道题目,也就是今天做的这个,题目难度为hard.题目不难理解,但是要求到了时间复杂度,就需要好好考虑使用一下算法 ...

  6. 并发insert情况下数据重复插入问题的解决方案

    背景介绍 通常我们在接口里要保存一条数据时,会先判断该条记录在数据库里是否存在,如果不存在就插入,如果存在就返回已经存在. 就拿常见的工单来举例 Order order = orderService. ...

  7. 摩托罗拉SE955 One Discrete Length,Two Discrete Lengths,Length Within Range 相关解释

    motorola scanner datasheet相关解释(下面通过Simple Serial Interface(SSI)进行设置,非扫描官方datasheet的设置条码): One Discre ...

  8. CentOS 6.9上安装Mysql 5.7.18 安装

    CentOS 6.9上安装Mysql 5.7.18 安装 下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-g ...

  9. C# C/S程序使用HTML文件作为打印模板

    C#   C/S程序使用HTML文件作为打印模板 在网上找了一堆的资料,整理到郁闷呀,慢慢试慢慢改.哎,最终成功了,哈,菜鸟伤不起呀 public partial class Print : Form ...

  10. excel十几万行数据快速导入数据库研究(转,下面那个方法看看还是可以的)

    先贴原来的导入数据代码: 8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.setting ...