博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 331 Mapping the Swaps 求交换排序的map 纯DFS
阅读量:5102 次
发布时间:2019-06-13

本文共 760 字,大约阅读时间需要 2 分钟。

给出一个序列,每次交换两个数,求有几种交换方法能使序列变成升序。

n不大于5,用dfs做。

代码:

 

#include 
#include
#include
using namespace std;int num[8], ans, n;bool check() { //check if the array is inorder for (int i = 0; i < n - 1; i++) if (num[i] > num[i + 1]) return false; return true;}void dfs(void) { for (int i = 0; i < n - 1; i++) if (num[i] > num[i + 1]) { swap(num[i], num[i + 1]); if (check()) ans++; else dfs(); swap(num[i], num[i + 1]); }}int main () { int cas = 0; while (scanf("%d", &n) && n) { for (int i = 0; i < n; i++) scanf("%d", &num[i]); ans = 0; if (!check()) dfs(); printf("There are %d swap maps for input data set %d.\n", ans, ++cas); } return 0;}

 

 

转载于:https://www.cnblogs.com/xinyuyuanm/p/3211898.html

你可能感兴趣的文章
Hibernate工作原理及为什么要用?
查看>>
【机器学习】EM算法详细推导和讲解
查看>>
大话卷积
查看>>
第三次作业 词频统计
查看>>
hdu4501——小明系列故事——买年货(多维背包)
查看>>
javascript 中XMLHttpRequest 实现前台向后台的交互
查看>>
创建Web Service后,客户端不能调用的解决办法(提示:此方法只有在本地才可以使用)...
查看>>
【练习】Java实现的杨辉三角形控制台输出
查看>>
RabbitMQ 概念
查看>>
java IO之PrintStream和PrintWriter
查看>>
NOI题库--砝码称重V2(多重背包2^n拆分)
查看>>
【BZOJ-1324】Exca王者之剑 最小割
查看>>
js基础练习:实现资料查找
查看>>
CAM(内容可寻址存储器)的认知
查看>>
Alpha 冲刺 (2/10)
查看>>
[BZOJ1999][codevs1167][Noip2007]Core树网的核
查看>>
据说有99%的人都会做错的面试题
查看>>
Java过滤emoji表情,找出emoji的unicode范围。
查看>>
jLink V8调试exynos 4412 u-boot的几点补充
查看>>
快递查询 C#
查看>>