HUST 1586 数字排列
时间:2022-05-07
本文章向大家介绍HUST 1586 数字排列,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1586 - 数字排列
时间限制:1秒 内存限制:128兆
91 次提交 36 次通过
题目描述现有n个k位的数字,你的任务是重新安排数字每一位的位置,使得重新安排后这n个数字中最大的数字和最小的数字之差的绝对值最小,对于每一位的调整是相对于所有的数字的,例如有3个数字1234、4321和7890,重新安排的方案是交换第二位和第三位,则3个数字变为1324、4231和7980。
输入输入包括多组样例,每组样例包括多行。每组样例的第一行包括2个整数n和k,分别代表数字的个数和位数(1 ≤ n, k ≤ 8),接下来的的n行包括n个k位的数字,允许调整后的数字有前导0(例如000123代表123)。输出每组数据输出一个整数,为调整后最大数字与最小数字之间的最小差值。样例输入
3 3
010
909
012
6 4
5237
2753
7523
5723
5327
2537
样例输出
3
2700
提示第二组样例可以将原顺序(1,2,3,4)调整为(3,1,4,2),则第二个数字变为5237,第三个数字变为2537,分别为这样变换后的最大值和最小值,可以验证这样变换后的差值2700为最小差值。题目链接:http://acm.hust.edu.cn/problem/show/1586分析:直接k!的去枚举全排列,将所有列都重新排列,然后暴力处理出来每一行的新数字,再维护一个最大值一个最小值相减即可。
数组a用来记录输入的字符串,数组b用来记位数,然后进行全排列,数组c用来装数组a全排列后的值,注意数组c要清零
要用到next_permutation全排列,自动生成下个序列!详细解释请参考我的博客!
下面附上AC代码:
1 #include <bits/stdc++.h>
2 using namespace std;
3 char a[10][10];
4 int main()
5 {
6 int n,k;
7 while(cin>>n>>k)
8 {
9 int b[10];
10 for(int i=1;i<=n;i++)
11 cin>>a[i];
12 for(int i=1;i<=k;i++)
13 b[i]=i;
14 int m=1;
15 for(int i=1;i<=k;i++)
16 m*=i;//直接求k!用m来装k全排列的可能性
17 int output=0x3f3f3f3f;
18 for(int i=1;i<=m;i++)
19 {
20 next_permutation(b+1,b+1+k);//全排列
21 int c[10];
22 memset(c,0,sizeof(c));
23 for(int i=1;i<=n;i++)
24 {
25 for(int j=1;j<=k;j++)
26 {
27 c[i]=c[i]*10+a[i][b[j]-1]-'0';//数组c用来装数组a排列后的值
28 }
29 }
30 sort(c+1,c+1+n);//排序,将数组c中的值进行升序排列
31 output=min(output,c[n]-c[1]);//维护一个最大值一个最小值相减,求最小差值
32 }
33 cout<<output<<endl;
34 }
35 return 0;
36 }
- 一个scrapy框架的爬虫(爬取京东图书)
- mongodb生产环境(副本集模式)集群搭建配置
- ELK日志收集分析系统配置
- 【学术】如何在15分钟内建立一个深度学习模型?
- Elasticsearch(GEO)空间检索查询
- java spark-streaming接收TCP/Kafka数据
- hiveQL求差集
- hiveQL去重
- springboot高并发redis细粒度加锁(key粒度加锁)
- java使用spark/spark-sql处理schema数据
- redis的发布订阅模式pubsub
- linux命令和awk
- django集成celery之callback方式link_error和on_failure
- 使用beanstalkd实现定制化持续集成过程中pipeline
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Prime Path(POJ - 3126)【BFS+筛素数】
- (leetcode每日打卡)秋叶收藏集【动态规划】
- 设计模式~调停者模式(Mediator)
- Sequential Nim(CodeForces - 1382B)【博弈】
- Less Coin Tosses(Gym - 102346L)【打表+找规律】
- leetcode1558题解【贪心】
- 如何将炫酷的报表直接截图发送邮件——在Superset 0.37使用Schedule Email功能
- Kafka监控必备——Kafka-Eagle 2.0.2正式发布
- 安防/教育/互联网直播视频组件EasyRTSPServer读取本地文件报错找不到EasyStreamClient.dll解决方法
- C语言编程入门之--第六章C语言控制语句
- RTSP网络摄像头网页无插件直播视频平台EasyNVR自定义标题和CopyRight步骤
- 设计模式~解释器
- RTSP/GB28181/HIKSDK/Ehome协议视频上云服务平台EasyCVR人脸识别开发ArcSoftFace环境搭建
- RTSP/GB28181/HIKSDK/EHome流媒体协议视频上云网关EasyCVR流地址密码不正确如何修正?
- tmux终端意外出现控制字符