目录

  • 问题描述
  • 解决
  • 猜想
  • 总结

今天在做一道题,结果答案始终不对,思路虽然有点笨吧,但是方法一定是没有问题的。
经过一系列的排除,发现是next_permutation()函数的问题。

问题描述


http://oj.ecustacm.cn/problem.php?id=1301

做这道题的时候,一看不就是一个全排列么?。
用next_permutation()函数就完了

#include<cstdio>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;
int a[8]={2,3,5,8,1,4,6,7};
int main(void)
{int n=0;ll sum1,sum2;do{bool flag1=false;bool flag2=false;bool flag3=false;bool flag4=false;sum1=pow(a[0]*10+a[1],2)+pow(a[2]*10+a[3],2)+pow(a[4]*10+a[5],2)+pow(a[6]*10+a[7],2);sum2=pow(a[0]+a[1]*10,2)+pow(a[2]+a[3]*10,2)+pow(a[4]+a[5]*10,2)+pow(a[6]+a[7]*10,2);if(a[0]==8||a[2]==8||a[4]==8||a[6]==8)flag1=true;if(a[0]==5||a[2]==5||a[4]==5||a[6]==5)flag2=true;if(a[0]==3||a[2]==3||a[4]==3||a[6]==3)flag3=true;if(a[0]==2||a[2]==2||a[4]==2||a[6]==2)flag4=true;if(flag1&&flag2&&flag3&&flag4){if(sum1==sum2){n++;}}}while(next_permutation(a,a+8));printf("%d %d\n",n,n/24);return 0;
}

正确的答案应该是 576 24
但是运行的结果却不尽人意,我很好奇为啥?

解决

经过我一系列的排除,我觉的数组的数据初始排列应该有问题。
经过我的一修改。奇妙的好了。

虽然结果正确了,但是我不禁陷入了沉思。
为啥啊?

我又翻书看一下对于next_permutation()的描述。顿时大悟。
原来next_permutation()是按字典序依次排列的,当排列到最大的值是就会返回false.
之前的我用习惯了,忘了最初的概念,当时也没深究,反正用它就是算全排列的,于是造成了做题种出现了错误。

猜想

既然又对next_permutation()函数加深了了解。
那么我们就来实践一下。
猜想:
根据定义next_permutation()函数是按字典序依次排列的,排列到最大停止。
那么如果刚开始的数据的字典序就是最大的,那么应该就只会运行一次,即初始的值。

由上图可以看到我们的猜想是正确的。

总结

next_permutation()函数是按字典序排列的函数。它与初始的数组的值是息息相关的。
不要以为随便一个数组,用next_permutation()函数就可以得到全排列。
要时刻的记住里面的特性。

为了保险起见。在使用前可以先排序数组。再用next_permutation()。

下面是另一位博主写的关于next_permutation的另一个大坑,写的很不错。
我这里就不造轮子了。
C++中全排列函数next_permutation的一个大坑

使用next_permutation()的坑,你中招了么?相关推荐

  1. elo算法c语言,王者荣耀Elo机制?你中招了吗?

    原标题:王者荣耀Elo机制?你中招了吗? 最近许多小伙伴们的说自己被Elo制裁了,那么是什么原因导致被制裁的呢? 其实在王者荣耀最初的时候,是没有这个机制的,那个时候大家的水平都不高,只要有人认真地去 ...

  2. 勒索病毒GANDCRAB新变种GANDCRAB V5.2新变种来袭 你中招了吗?

    GANDCRAB勒索病毒新变种GANDCRAB V5.2新变种来袭 你中招了吗? 今年网络流行的勒索病毒后缀 phobos/ETH/ITLOCK/MTP/MG/adobe/AOL/xxx4444 GA ...

  3. 10条买房错误思维,你中招了几条?

    10条买房错误思维,你中招了几条? 在2015年买房,大家都经常有哪些错误的买房思维呢?今天汇总购房者常常产生的买房错误思维,并附上解穴办法供大家参考. "死穴"之一:买涨不买跌! ...

  4. 58上租房显示服务器异常,“58同城租房信息”满是套路,你中招了吗?

    原标题:"58同城租房信息"满是套路,你中招了吗? 58同城,大家都很熟悉.尤其是那句广告词:58同城,一个神奇的网站.网站的确是挺神奇的,招工信息.租房信息各种信息无奇不有,然而 ...

  5. 企业公众号运营的五大误区,你中招了吗?

    厅客目前重点耕耘职业撰稿人雇佣的市场.我自己接触了各行各业.各个发展阶段的创始人.市场负责人和实际负责公众号运营的人员,我深知企业在公众号内容生产和运营推广方面的痛点. 流量时代已经过去了,在流量明码 ...

  6. Python代码中的三大常见“愚形”,你中招了吗?

    愚形,是围棋的专业术语,凡是效率低下且不美观的棋形,统称为愚形.比如空三角和团子,就是典型的愚形.低水平棋手经常会在无意中走出愚形,而那些高手平棋手,尽管在生死存亡的危机时刻也会用愚形求生或者逃命,但 ...

  7. 学计算机要重修一门语言嘛,大学挂科率“最高”的4门科目,不仅要补考还要重修,你中招了吗...

    原标题:大学挂科率"最高"的4门科目,不仅要补考还要重修,你中招了吗 每当高三的学生觉得学习压力大的时候,老师总会说现在先忍耐一下,等到你们考上大学之后就轻松了.很多高三学生对于此 ...

  8. 安搭Share|四种不同类型的“宅”你中招了吗?

    "宅"作为时下年轻人的标签,导致很多都觉得自己"不擅于社交",宁愿一个人呆在家里玩手机,也不想出去玩.如果细究一下,这群宅男宅女们每个人"宅" ...

  9. 程序员下班电脑不关机的5大原因,你中招了吗?《表单提交》

    程序员下班电脑不关机的5大原因,你中招了吗? *** 表单提交 *** 你下班时是不是只将显示器一关,揣上手机就走了? 曾有安保人员晚上来办公室巡查时问,为什么这些人不关机就下班呢? 作为程序员,你会 ...

  10. 抖音账号被隐形降权,你中招了吗?(抖音运营)

    工欲善其事,必先利其器是说:工匠想要使他的工作做好,一定要先让工具锋利.比喻要做好一件事,准备工作非常重要. 抖音账号被隐形降权,你中招了吗! 抖音运营相关文章:抖音运营学习 文章目录 一.异常养号操 ...

最新文章

  1. Python3.5源码分析-Dict概述
  2. Android FrameWork学习(二)Android系统源码调试
  3. JavaScript单线程
  4. xml gridview控件增删改查_Mybatis之XML如何映射到方法
  5. Mule web service调用中的复杂类型传递
  6. javascript --- 防抖与节流
  7. 【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端
  8. 移动端 flexible.js 布局详解
  9. 使用CommandLineRunner或ApplicationRunner接口创建bean
  10. vue.js踩坑之组件参数检验与非props特性
  11. 11_HTML5_Local_Storage本地存储
  12. FastReport使用一——简介
  13. static import java_Java 静态导入Static import
  14. OPC通讯测试、OPC测试常见问题解决方案
  15. Servlet共享数据域cookie、session ;监听器;过滤器
  16. springboot 多模块 Found multiple @SpringBootConfiguration annotated classes
  17. Flask Docker Hello Word
  18. 声音/声学成像2021-4-13
  19. java 多线程和线程池
  20. 计算机专业需要单核还是多核,单核和多核计算机CPU之间的区别

热门文章

  1. 2、cookie session token详解
  2. 键盘压缩背景,ios滚动不流畅,禁止遮罩层下面内容滚动
  3. 原生js获取css样式
  4. php websocket
  5. 板邓:php获取数组元素个数
  6. Django搭建简易博客教程(四)-Models
  7. zabbix proxy安装配置
  8. IOS中UIActionSheet使用方法详解
  9. Java设计模式(七)策略模式 模板模式
  10. FreeRTOS 中断优先级嵌套错误引发HardFault异常解决