全排列的几种形式

1:暴力破解 求多少元素的全排列就写多少循环,最后添加if语句判断合适的条件语句打印

/暴力穷举法 例如输出1 2 3 的全排列
	for (int i = 0; i < 3; ++i)
	{
		for (int j = 0; j < 3;++j)
		{
			for (int k = 0; k < 3; ++k)
			{
				if (i != j && i != k && j != k)
				{
					cout << i+1<<" " << j+1<<" " << k+1 << endl;
				}
			}
		}
	}

这种做法写法很是繁琐,不建议使用。

2:递归求解

求n个元素的全排列需要先求出n-1个元素的全排列,递归终止条件就是到最后一个元素。


#include <iostream>
#include <cstring>
#define N 100
using namespace std;

void permutation(char* a, int k, int m)
{
	int i, j;
	if (k == m)//如果说:到达了最后一位的全排列,那么就开始打印 ,不是说一个数据一个数据打印的,而是排列好再打印
	{
		for (i = 0; i <= m; i++)
			cout << a[i];
		cout << endl;
	}
	else
	{
		for (j = k; j <= m; j++)
		{
			swap(a[j], a[k]);
			permutation(a, k + 1, m);
			swap(a[j], a[k]);//换回来
		}
	}
}
int main()
{
	char a[N];
	int n;
	cin >> a;
	n = strlen(a) - 1;
	permutation(a, 0, n);
	system("pause");
	return 0;
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 O PROFINET IO 网络拓扑 1.1 简介 从STEP 7 V5.4 SP 2开始支持网络拓扑组态, 您可以在拓扑上组态 PROFINET IO 系统。 有了拓扑组态,可以使用 PROFINET 的一些功能,例如“在操作期间更改 IO 设备”或 “设备更换无需存储介质/PG”。 在下列任务中,拓扑编辑器可为您提供支持: § 获得关于项目中 PROFINET 设备的所有部件的拓扑信息 § 采用简单的拖拽操作将接口和端口进行互连,然后在 PROFINET 上组态拓扑集,并设 置属性 拓扑编辑器具有一系列功能,可用于设置、互连和诊断包括端口在内的所有 PROFINET 设备的属性。可提供下列功能和信息: § 项目中所有 PROFINET 设备及其端口的显示 § 使用计算的信号运行时间,为每个端口组态电缆长度和组态电缆类型 § 通过本地识别各个 PRORINET 设备来互连数据 § 每个单独端口的 PRORINET 设备的诊断信息 § 通过在线/离线比较节点数据,简化默认检测 § 从图形视图调用诊断(模块信息) § 导入网络拓扑 设备操作在 PROFINET 拓扑环境中,必须支持简单网络管理协议(SNMP),链路层发现协 议(LLDP),物理设备(PDEV),发现和组态协议(DCP)。其中 PDEV 来源于 PNO 标准的以太 网接口/端口描述。其中包括 IP/MAC 地址,诊断,FO 属性,冗余,同步,邻接,参数化 等。对于支持 PDEV 的设备和不支持 PDEV 的设备,在 Step7 硬件组态中可以查看两者之 间的差异。其中支持 PDEV 的设备带有一个接口和 N 个端口。参考图 1 是否支持 PDEV 的 两类设备的区别

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值