9.1 NOIP普及组试题精解(3)
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)的更多相关文章
- 9.1 NOIP普及组试题精解(2)
9-4 soldier.c #include <stdio.h> #define MAXN 21 }; int n, m, x, y; //n,m为B点的行列坐标位置,x,y为马的坐标位置 ...
- 9.1 NOIP普及组试题精解(1)
9-1 series1.c #include <stdio.h> int main() { float s=0.0,k; int n; printf("输入数字k(1~15):& ...
- 9.2 NOIP提高组试题精解(2)
9-18 fruit.c #include <stdio.h> #define MAXN 10000 int Queue1[MAXN], Queue2[MAXN]; void Insert ...
- 9.2 NOIP提高组试题精解(1)
9-16 poise.c #include <stdio.h> #define MAXN 1001 int main() { ], flag[MAXN] = { }; //保存6种砝码的数 ...
- 2016.10.6初中部上午NOIP普及组比赛总结
2016.10.6初中部上午NOIP普及组比赛总结 中了病毒--病毒--病毒-- 进度: 比赛:AC+0+0+20=120 改题:AC+0+AC+20=220 Stairs 好--简--单!递推就过了 ...
- 2016.8.15上午纪中初中部NOIP普及组比赛
2016.8.15上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1333 这次比赛不怎么好,因为这套题目我并不是很擅长. 可同学们 ...
- 2016.9.15初中部上午NOIP普及组比赛总结
2016.9.15初中部上午NOIP普及组比赛总结 2016.09.15[初中部 NOIP普及组 ]模拟赛 又翻车了!表示时超和空超很可恨! 进度 比赛:AC+0+0+20=120 改题:AC+80+ ...
- 2016.9.10初中部上午NOIP普及组比赛总结
2016.9.10初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1340 好不爽!翻车了!不过排名差不多在中间偏上一点, 还好不是 ...
- 2016.9.3初中部上午NOIP普及组比赛总结
2016.9.3初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1339 这次真爽,拿了个第四!(我还被班主任叫过去1小时呢!) 进 ...
随机推荐
- linux中tr用法
tr命令不能直接从文件中读取并转换文本,因此通常都使用重定向输入或者管道传递方法: -s 代替掉重复的字符 #echo "HHHHHHEEEElllooooo" | tr -s ' ...
- Node.js学习入门手册
Node.js 安装 1.下载http://nodejs.org/dist/v0.12.1/node-v0.12.1-x86.msi并完成安装 2.下载https://www.python.org/f ...
- mysql root密码忘记最快方法
在my.cnf [mysqld]栏添加 skip-grant-tables 然后重启/etc/init.d/mysqld restart mysql ##select password('新密码') ...
- 微信小程序-wxs
你想在页面上使用JavaScript代码吗? 对不起,小程序不支持! 最近,一个项目就有这样的需求,我也就用上了wxs 使用方法很简单: 项目中用的是取小数点2位以及5位 具体请看官方API:WXS
- Vue框架引入JS库的正确姿势
参考自:https://mp.weixin.qq.com/s?src=3×tamp=1527154113&ver=1&signature=tWGeTa86gyK*RL ...
- 【Python】学习笔记十五:循环对象
循环对象 所谓的循环对象,包含有一个next()方法(python3中为__next__() ),这个方法的目的就是进行到下一个结果,而在结束一系列结果之后,举出StopIteration错误 当一个 ...
- 自定义序列化技术3 (.net 序列化技术) C++ 调用C# DLL
打开SerializableAttribute利用里面的函数进行编辑. // sparse.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" ...
- 面试题 15:链表中倒数第 k 个结点
面试题 15:链表中倒数第 k 个结点 题目:输入一个链表,输出该链表中倒数第 k 个结点.为了符合大多数人的习惯, 本题从 1 开始计数,即链表的尾结点是倒数第一个结点.例如一个有 6 个结点的 链 ...
- java 内存与内存溢出
学习自:http://www.codeceo.com/article/jvm-memory-overflow.html 讲的很清楚
- Java 加载器
类的加载是由类加载器完成的,类加载器包括: 根加载器( BootStrap ).扩展加载器( Extension ).系统加载器( System )和用户自定义类加载器( java.lang.Clas ...