近似排序......

news/2024/9/19 0:43:16/文章来源:https://www.cnblogs.com/tflsghh/p/18282259

一年没动算法的蒻蒟随手点开了之前做过的一道【近似排序】,然后开始了,恢复之旅......


TFLSOJ【近似排序】

看到题目经简单分析后先写出了一种傻瓜解法,(可能叫 暴力??)

#include<bits/stdc++.h>
using namespace std;
int x,y;
int a[110];
int main(){cin>>x>>y;for(int i=x,j=1;i<=y;i++,j++){a[j]=i;}for(int i=1;i<=y-x+1;i++){for(int j=1;j<=y-x+1;j++){if(a[i]%10<a[j]%10)swap(a[i],a[j]);}}for(int i=1;i<=y-x+1;i++){for(int j=i;j<=(y-x)/10;j++){if(a[i]%10==a[j]%10 && a[i]/10>a[j]/10)swap(a[i],a[j]);}}for(int i=x,j=1;i<=y;i++,j++){cout<<a[j]<<endl;}return 0;
}

不出所料的:
image
代码中只对每个数的十位和个位做了排序处理,而当数位多的时候就无法处理了。于是想到了通过获取整数的长度来进行磨运算和除运算。


如何获取整数的长度呢?模糊不清的知识点length(),size(),sizeof().......
好像都不能直接获取整数的长度。于是在百般搜索之下AI给出了一段函数:

int getIntegerLength(int number) {int length = 0;do {length++;number /= 10;} while (number != 0);return length;
}

也就是通过一个数不断除以10直到除尽,记录除了几个10。真是个好办法。。。。。
于是就有了以下代码2.0:

#include<bits/stdc++.h>
#include<cstring>
using namespace std;
int x,y;
int a[110];
int ll(int number) {int l = 0;do {l++;number /= 10;} while (number != 0);return l;
}
int main(){cin>>x>>y;for(int i=x,j=1;i<=y;i++,j++){a[j]=i;}for(int i=1;i<=y-x+1;i++){for(int j=1;j<=y-x+1;j++){int l=pow(10,ll(a[i])-1);int lj=pow(10,ll(a[j])-1);if(l!=10){do{l+=(l/10);}while(l%100==0);}if(lj!=10){do{lj+=(lj/10);}while(lj%100==0);}
//			cout<<l<<endl<<lj<<endl;if(l==lj){if(a[i]%l<a[j]%lj)swap(a[i],a[j]);}else{if(a[i]%l<(a[j]%(lj*10)))swap(a[i],a[j]);}}}for(int i=1;i<=y-x+1;i++){for(int j=i;j<=(y-x)/(pow(10,ll(a[i])-1));j++){int l=pow(10,ll(a[i])-1);int lj=pow(10,ll(a[j])-1);do{l+=(l/10);}while(l%10!=0);do{lj+=(lj/10);}while(lj%10!=0);if(l==lj){if(a[i]/l<a[j]/lj)swap(a[i],a[j]);}else{if(a[i]/l<(a[j]/(lj*10)))swap(a[i],a[j]);}swap(a[i],a[j]);}}for(int i=x,j=1;i<=y;i++,j++){cout<<a[j]<<endl;}return 0;
}

不用提交了一个问题引出十个问题,服了。果断看题解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/740596.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SMU Summer 2024 Contest Round 1

SMU Summer 2024 Contest Round 1 Dice and Coin 题意 给个 n 面骰子和一枚硬币,初始投骰子,若骰子的值在 1 到 \(K-1\) 之间则反复投硬币,硬币为正则该值翻倍,否则为 0 ,当值为 0 输掉游戏或者大于等于 \(K\) 时赢得游戏结束,问你可以赢得游戏的概率为多少。 思路 以 1 …

分布式事务最经典的七种解决方案

转载:后端 - 分布式事务最经典的七种解决方案 - 分布式事务 - SegmentFault 思否 随着业务的快速发展、业务复杂度越来越高,几乎每个公司的系统都会从单体走向分布式,特别是转向微服务架构。随之而来就必然遇到分布式事务这个难题。 这篇文章首先介绍了相关的基础理论,然后…

江门数字化mes系统定制哪家好 珠海盈致mes系统服务商

对于江门数字化MES系统的定制服务,选择珠海盈致科技是一个不错的选择。珠海盈致科技是一家专业的智能制造解决方案提供商,具有丰富的数字化制造和MES系统定制经验。以下是选择珠海盈致科技的一些优势: 专业团队:珠海盈致科技拥有一支专业的团队,包括软件工程师、制造业专家…

python+anaconda环境搭建

一:下载安装 1、安装anaconda anaconda官网2、安装pycharm pycharm官网二:配置环境 1、找到anaconda安装位置在系统环境变量中添加如下信息打开DOS框,输入conda --version,出现如下信息说明配置成功三:创建虚拟环境 1、打开DOS框;输入(name表示自己虚拟环境的名称;versi…

Open-Sora1.2环境搭建推理测试

​引子 前阵子写了一篇Open-Sora1.0环境搭建&推理测试(Open-Sora1.0环境搭建&推理测试_自己搭建sora服务-CSDN博客,感兴趣的童鞋,请移步)。Open-Sora1.1发布的时候,撇了一眼新闻。后面一转头,忘记这个事情了。无意间翻到其开源网站上,发现2024.6.17发布1.2版本了…

04、组件介绍

k8s里的资源对象 在k8s里,yaml用来声明API对象的,那么API对象都有哪些? 可以这样查看资源对象 kubectl api-resources yaml使用缩进表示层次,缩进不允许使用tab,只能用空格,缩进空格数多少不要求,只要保证同一层级空格数一样多即可 使用 # 书写注释 数组(列表)是使用 …

代码随想录算法训练营第25天 | 491.递增子序列

491.递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]] 说明: 给定数组的长度不会超过15。 数组中的整数范围是…

零基础 用unity做一款FPS射击游戏-下载安装unity(1)

【【Unity教程】零基础制作一个简单的FPS游戏案例-基于Unity2023】https://www.bilibili.com/video/BV1gH4y1575r?p=2&vd_source=5458d6a330cf989012a60998192e4cc2 这是我所看的教程 首先要下载Unity Hub(管理各种版本的unity) 进入 Unity官方下载_Unity最新版_从Unity …

离线安装tcpdump

链接:https://pan.baidu.com/s/1Jbos9YwIgt6oETmBA5lezQ 提取码:fwgj 检查gcc环境若无gcc环境 执行以下命令: tar -xvf gcc.tar cd gcc rpm -Uvh *.rpm --nodeps –forcem4包安装tar -xvf m4-1.4.19.tar.gz cd m4-1.4.19 ./configure make make installbison包安装tar -xvf …

关于苹果设备接力失效的处理办法

处理苹果设备接力无法使用的问题RT 简述 遇到该问题的原因可能有很多,甚至可能只是因为升级了一次系统。 网上有很多乱七八糟杂七麻八的办法,不可行,于是自己写一份做之后的留档。 关于这个问题已经咨询过了apple的客户支持部门,看起来他们也不知道该怎么做,试了一圈之后没…

当非遗遇上AI,简直美不可言!

本文由 ChatMoney团队出品 大家好,今天我要跟大家分享的是关于非遗与AI结合!我是用ChatmoneyAI-ChatAI聊天系统AI绘画制作的,你敢相信这些照片都是AI生成的吗?一、引言: 随着科技的飞速发展,传统文化与现代科技的融合愈发引人注目。最近,非遗与人工智能(AI)的奇妙结合…

Kutools-for-Excel学习版下载

一、软件介绍在处理 Excel 文件时,经常会遇到一些繁琐但又不可避免的操作,严重影响到文档编辑效率。Kutools for Excel 与 Excel 2007 / 2010 / 2013 / Microsoft 365 的界面完美融合,超过 300+ 的功能都提供了详细操作提示,即使是从未接触过的功能,也能立马上手使用,是你…