C++-整数重排问题

意见反馈 意见反馈 主题:991 回复:2082

C++-整数重排问题

浮生未歇 发布于 2017-03-27 字数 411 浏览 1319 回复 4

问题:输入一个整数,要求对其所有数字重新排序,使之能被7整除,数字中必须包含1、2、3、4
ps:求问能否用空指针强制转换的方式实现,即把保存数字的内存给空指针,然后从地址中逐个取值?

针对下面的评论我加几句:

  1. 可以用字符串去保存,然后从字符串中取每位的数
  2. ps只是附加,如果可以实现那求指教,如果不能也无所谓,只是疑问
  3. 能实现下问题的代码,然后把代码贴出来,当然最好

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(4

瑾兮 2017-10-14 4 楼

要求效率高的话,不妨仿照冒泡排序和快速排序的办法.
之所以能仿照,主要是因为排序就两种可能:小于(小于等于)或大于(大于等于)。能否被7整除也就两种可能:能被7整除或不能被7整除。
如果还需要排序那么也很方便:
1.任意选取一个数,先判断是否能被7整除,如果能就把能被7整除的数放前面,不能的就放后面,如果不能就与之相反。
2.这样就构成了两个数组,分别对他们用冒泡,快速等等高效的排序方法即可。
至于是能被7整除的放前面还是后面就看需求如何了....

夜无邪 2017-09-08 3 楼

取出所有的数 可以

mod 就是求余 与10 第一次求余得到的是个位数字 同时进行整除与10的保存这个数位sun
再用上一次的sun 与10 求余得到的是十位数字 同时进行整除与10的保存这个数位sun=sun/10
如此循环 直到sun/10==0 那么 sun那个数位上的数字

存储在数组中

然后把所有可能出现的结果都组合出来

原数为12345的话
那么他的所有组合有54321种
分别用与7求余 如果余数为0 那么保存这个数

其实向前面说的用字符串的话 或许不用做那些求余整除 不过个人觉得数字应该只是long的话 没必要 因为 位数不会超过13......

泛泛之交 2017-08-02 2 楼

可以考虑字符串形式输入,然后用指针指向首地址按下标遍历即可。

甜柠檬 2017-06-16 1 楼

字符串排列,然后遍历数组,对7取余数,0则返回