社区
数据结构与算法
帖子详情
1--N的全排列,谁有算法,急用
IloveMint
2002-07-10 08:37:44
同上
...全文
68
3
打赏
收藏
1--N的全排列,谁有算法,急用
同上
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LeeMaRS
2002-07-10
打赏
举报
回复
http://www.csdn.net/expert/topic/843/843002.xml?temp=.4877893
这里有算法 还有讲解.
laughcry2002
2002-07-10
打赏
举报
回复
这是我刚写的一个:
/* COPYRIGHT 2002 by LaughCry */
/*
Enumerate all the N! permutation(s) of 0..N-1
*/
#include <stdio.h>
#define N 4
#define TRUE 1
#define FALSE 0
void main(void)
{
char used[N], perm[N], i, n;
long cnt = 0;
int top = -1;
for(i=0; i<N; i++) used[i] = FALSE;
while(1){
for(i=0; i<N; i++)
if(!used[i]){
perm[++top] = i; /* push i */
used[i] = TRUE;
}
/* print_out */
printf("\n%-8ld", ++cnt);
for(i=0; i<N; i++) printf("%d ", perm[i]);
do{
if(top == -1) goto done; /* end */
n = perm[top--]; /* pop n */
used[n] = FALSE;
for(i = n+1; i < N && used[i]; i++);
}while(i >= N); /* not found */
perm[++top] = i; /* push a num */
used[i] = TRUE;
}
done:
printf("\ntotal: %ld\n", cnt);
}
laughcry2002
2002-07-10
打赏
举报
回复
这是我师弟做的一个程序:
/*
* 求N个数的所有可能的排列(共N!种)并输出。
*/
#include "stdio.h"
struct num{
int n;
struct num *nextPtr;
};
typedef struct num NUM;
typedef NUM * NUMPTR;
/*总根-- 最后一个数a={1}*/
NUM a={1};
NUMPTR zongPtr,endPtr,headPtr;
void putout(NUMPTR);
void freeout(NUMPTR);
void move(NUMPTR);
void move3(NUMPTR);
void change(NUMPTR);
int num,k=0;
main()
{
int i;
NUMPTR deadPtr,newPtr,startPtr;
headPtr=(NUMPTR)malloc(sizeof(NUM));
startPtr=&a;
printf("Enter the number:")
scanf("%ld",&num);
for(i=num;i>=2;i--)
{
newPtr=(NUMPTR)malloc(sizeof(NUM));
startPtr->nextPtr=newPtr;
newPtr->n=i;
startPtr=newPtr;
}
startPtr->nextPtr=&a;
endPtr=&a;
zongPtr=a.nextPtr;
/*领头head*/
headPtr->nextPtr=zongPtr;
move3(headPtr);
freeout(headPtr);
printf("\n%d groups!\n",k);
return 0;
}
/*打印*/
void putout(NUMPTR nPtr)
{
int i;
NUMPTR putPtr;
putPtr=nPtr;
k++;
for(i=0;i<num;i++){
putPtr=putPtr->nextPtr;
printf("%ld ",putPtr->n);
}
printf("\t");
}
/**释放链表*/
void freeout(NUMPTR freePtr)
{
NUMPTR deadPtr;
int i;
for(i=0;i<=num;i++){
deadPtr=freePtr;
freePtr=freePtr->nextPtr;
free(deadPtr);
}
}
/*最后三个数的全排列*/
void move(NUMPTR startPtr)
{
int temp=startPtr->n;
if(startPtr->nextPtr==endPtr)
change(startPtr);
else
{
do{
move(startPtr->nextPtr);
putout(headPtr);
change(startPtr);
putout(headPtr);
}while(startPtr->n!=temp);
}
}
/*此函数用于最后三个数首尾交换*/
void change(NUMPTR startPtr)
{
int temp=startPtr->n;
startPtr->n=endPtr->n;
endPtr->n=temp;
}
/*大于3个数时*/
void move3(NUMPTR startPtr)
{
int temp=startPtr->nextPtr->n;
if(startPtr->nextPtr->nextPtr->nextPtr==endPtr)
move(startPtr->nextPtr);
else
while(1)
{
move3(startPtr->nextPtr);
/*转一位*/
endPtr->nextPtr=startPtr->nextPtr;
startPtr->nextPtr=startPtr->nextPtr->nextPtr;
endPtr=endPtr->nextPtr;
if(startPtr->nextPtr->n==temp)
{
/*向前转一位*/
endPtr->nextPtr=startPtr;
break;
}
}
}
Fortran计算月食初亏——以2017年第一次月食为例
以2017年第一次月食为例,利用JPL提供的DE421历表和子程序计算月食初亏时刻。
电力系统【多目标调度+预测】基于周期增强时序预测与帕累托多目标优化的建筑群储能鲁棒调度策略研究(Python代码实现)
内容概要:本文围绕“基于周期增强时序预测与帕累托多目标优化的建筑群储能鲁棒调度策略”开展研究,提出了一种融合高精度预测与多目标优化的综合调度方法。首先,采用周期增强的时序预测技术对建筑群的电力负荷与可再生能源出力进行精准建模,充分挖掘数据的周期性特征以提升预测准确性;其次,构建基于帕累托前沿的多目标优化模型,综合考虑经济成本最低、碳排放最小化以及系统运行鲁棒性等多重目标;最后,引入鲁棒优化机制应对预测不确定性,增强调度方案在复杂动态环境下的适应能力与稳定性。研究通过Python编程实现了完整的
算法
流程,涵盖数据预处理、模型构建、优化求解与结果分析,适用于建筑群或园区级综合能源系统的协同优化调度。; 适合人群:具备一定电力系统基础知识、优化
算法
理论及Python编程能力的研究生、科研人员和工程技术人员,尤其适合从事综合能源系统、智能电网、储能调度与低碳运行等领域的研究人员。; 使用场景及目标:①应用于园区级或多建筑群能源系统,实现经济性与低碳化协同优化调度;②解决可再生能源波动性和负荷不确定性带来的调度风险,提升系统鲁棒性;③为相关科研提供一套可复现、可扩展的周期性预测与多目标鲁棒优化集成技术框架; 阅读建议:建议结合文中提供的Python代码进行实践操作,重点理解周期增强预测模块的设计逻辑与帕累托最优解集的求解过程,可通过更换实际数据集、调整权重策略或引入新约束条件进行拓展研究,从而深化对鲁棒调度机制与多目标权衡关系的理解与应用能力。
vue3+typeScript+elementplus+vite+pinia实现电商商城
博客后面名片可+作者(优惠&售后) 项目博客地址:https://yxsdgz.blog.csdn.net/article/details/166849623 执行命令: 1.安装依赖 npm install 2.启动项目 npm run dev 本项目为vue3+vite+element-plus+pinia+router+axios项目,参考电商商城样式为主题来设计元素,简洁美观; 技术要点:vue3、 路由router 、element-plus、typescript、css、vue、组件等;
机械设计基于CAXA3D的起重机挂钩零件建模:part1/part6/part9三视图尺寸标注与三维实体构建方法研究
内容概要:本文记录了第五组唐培钧在2026年9月26日线上讨论的成果,主要内容包括选定起重机挂钩零件作为工件设计对象,并明确个人负责的建模部分(part1、part6、part9)。通过CAXA3D实体设计软件完成三维建模,建模过程以圆柱体和孔类结构为基础,逐步构建出符合三视图尺寸要求的零件模型,最终确保三维模型与工程图标注尺寸完全一致。; 适合人群:机械设计、工业设计及相关专业的学生或初级工程师,具备基本CAD建模能力者优先;; 使用场景及目标:①用于课程设计、毕业设计或机械零部件数字化建模实践;②掌握从二维图纸到三维建模的转换流程,提升对零件结构理解和CAD软件操作能力;③团队协作分工参考,明确个人任务与建模标准; 阅读建议:建议结合CAXA3D或其他三维设计软件同步操作,重点关注圆柱体、孔类特征的建模方法及尺寸标注规范,注意保持模型精度与图纸一致性,便于后续装配与制造应用。
不同类型电动汽车充电负荷蒙特卡洛法模拟(常规充电、快速充电、更换电池)(Matlab代码实现)
内容概要:本文详细介绍了不同类型电动汽车(包括常规充电、快速充电和更换电池模式)充电负荷的蒙特卡洛模拟方法,并提供了完整的Matlab代码实现。文章系统阐述了电动汽车充电行为的随机特性,通过蒙特卡洛法对大量车辆的充电时间、时长、行驶里程和电池容量等关键参数进行概率抽样,从而模拟出聚合的充电负荷曲线。研究涵盖了三种主流充电模式的负荷特性分析,旨在为电网规划、负荷预测和充电基础设施建设提供科学依据。文中还包含了详细的模型构建逻辑、
算法
流程和仿真结果展示。; 适合人群:具备一定电力系统或交通电气化背景的科研人员、研究生以及从事电动汽车充电设施规划、智能电网调度等相关工作的工程师。; 使用场景及目标:①分析不同充电模式下电动汽车集群对电网负荷的影响;②为城市充电基础设施布局和电网扩容改造提供数据支持;③支撑电力系统中长期负荷预测与调度优化决策;; 其他说明:该资源不仅提供理论模型与代码实现,还强调实际应用价值,使用者可通过调整输入参数模拟不同地区、不同渗透率场景下的充电负荷,进而评估电网承载能力并制定合理的管理策略。
数据结构与算法
33,025
社区成员
35,334
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章