祝福:新春新年大吉大利。问鼎天下,谁与争锋。非递归非交换非转数组非无序全排列组合算法,诚邀比、测、评。

智者知已应修善业 2016-02-08 12:03:10
或许有人觉得口气好大?自信足证!
1.就该算法我所提出的几点比测评,不要空口无凭,要有力证据。
2.比测评越全面越详细,有文字或图片,高分就归你了。
3.我的想法不怕被人知道,我这个算法想得之最,该不会被认为是井蛙或夜郎。
4.如有比我更高效用时更短的代码,大分数给你了,不含用我算法优化或改进的,或用不同编译器进行比测的。
5.能优化我的算法的得高分,依据优化质量与重点酌情。
6.排列组合只需一半的规律,因为反转数,如123456789的反转数就是987654321,的确所有排列组合中都可以找到对应的反转数。不过我没找到规律,有提供规律的得高分。


static string 金箍棒(string 字符串, int 量, int 插位, int 调位)
{
if (插位 == 调位) return 字符串;
插位 = Math.Abs(插位 %= 量); 调位 = Math.Abs(调位 %= 量);
string 前 = "", 后 = "", 读 = "";
int 头 = 0, 尾 = 量 - 1;
Action<bool> 合成 = delegate(bool 选)
{
if (选) { 前 += 读; ++头; } else { 后 = 读 + 后; --尾; }
};
Action<bool> 读取 = delegate(bool 选)
{
读 = (选 ? 头 : 尾) != 调位 ? 字符串[(选 ? 头 : 尾)].ToString() : "";
合成(选);
};
Action<bool> 处理 = delegate(bool 选)
{
if ((选 ? 头 : 尾) < 插位) 读取(选);
else if ((选 ? 头 : 尾) == 插位)
{
读 = 字符串[调位].ToString() + (插位 != 调位 ? 字符串[插位].ToString() : "");
合成(选);
}
else if ((选 ? 头 : 尾) > 插位) 读取(选);
};
do
{/*字符量奇偶处理,采用折半我称双向处理,减少循环量提高处理速度,对整体减少时间是有效的2016-1-30 17:59*/
if (头 <= 尾) 处理(true);
if (头 < 尾) 处理(false);
} while (头 <= 尾);
return 前 + 后;
}
static void 金箍咒全排列组合(string 字符串)
{
string 金箍咒全排列组合 = "";
int 量 = 字符串.Length, 嵌套量 = 量 - (量 > 2 ? 2 : 1)/*设置跳过位数*/, 跟 = 嵌套量;
int[] 无限嵌套 = Enumerable.Repeat(0, 嵌套量).ToArray();
do/*2016年1月29日16~17点钟完成:1.字符串不转数组2.字符串不进行位置交换只按变化的下标读取3.减少一半循环量直接获得2个排列组合效率高4.按顺序输出不需重新排序5.自动嵌套代码量比写固定嵌套少6.依然可以对数组执行*/
{
if (量 < 2) break;
while (--跟 >= 0)/*嵌套逐级运算*/
if (无限嵌套[跟] >= 量 - 跟)
{
if (跟 - 1 < 0) break;/*防止越界*/
++无限嵌套[跟 - 1];
无限嵌套[跟] = 0;
}
if (无限嵌套[0] < 量)
{
跟 = 0; /*Console.WriteLine(string.Join(" ", 无限嵌套));*/
foreach (int 嵌套 in 无限嵌套)
金箍咒全排列组合 = 金箍棒(跟 == 0 ? 字符串 : 金箍咒全排列组合, 量, 跟, 嵌套 + 跟++);
Console.Write(金箍咒全排列组合 + " " + (量 > 2 ? 金箍棒(金箍咒全排列组合, 量, 量 - 2, 量 - 1) + " " : ""));
}
++无限嵌套[嵌套量 - 1];
跟 = 嵌套量;
金箍咒全排列组合 = "";
} while (无限嵌套[0] < 量);
}
...全文
317 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2016-02-16
  • 打赏
  • 举报
回复
中文编程 有点意思
纸飞机_ 2016-02-16
  • 打赏
  • 举报
回复
白衣如花 2016-02-16
  • 打赏
  • 举报
回复
汉字看得晕额
  • 打赏
  • 举报
回复
上次说我的算法与递归比较有问题的人怎么没声了?是好是歹也给个说法啊,是快是慢随意说说哦。 减少一个嵌套可节省很多循环量,用直接获取最后2位组合可节省一半循环量,这就是只循环生成一半的量,只是不是用反转数的逻辑,妙不可言!是这个算法的快诀窍,不过这种方式到底是否节省一半循环量觉得有点不可思议的感觉。 图片看这里
  • 打赏
  • 举报
回复
主函数调用:

            Action 显示运算历时 = delegate()
            { Console.WriteLine("运行时间: {0}ms", 总运行时间.ElapsedMilliseconds); Console.WriteLine("准备就绪按回车键开始:"); Console.ReadKey(); 总运行时间 = Stopwatch.StartNew(); };
            金箍咒全排列组合("12"); 显示运算历时();
            金箍咒全排列组合("123"); 显示运算历时();
            金箍咒全排列组合("1234"); 显示运算历时();
            金箍咒全排列组合("12345"); 显示运算历时();
            金箍咒全排列组合("123456"); 显示运算历时();
            金箍咒全排列组合("1234567"); 显示运算历时();
            金箍咒全排列组合("12345678"); 显示运算历时();
            金箍咒全排列组合("123456789"); 显示运算历时();
            金箍咒全排列组合("0123456789"); 显示运算历时();
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
如果你拿软件公司里需要在产品中真正复用的通用组件设计、计算框架来讨论,那你自己也会多一点点更实际的体验。
谢谢,只是今生无缘软件公司啊,否则就不发这了。
  • 打赏
  • 举报
回复
如果你拿软件公司里需要在产品中真正复用的通用组件设计、计算框架来讨论,那你自己也会多一点点更实际的体验。
内容概要:本文围绕基于三重移相控制(TPS)的双有源桥(DAB)高频隔离DC-DC变换器开展系统性研究,重点构建了其在Simulink环境下的高精度仿真模型。研究面涵盖SPS单相移相、DPS双重重移相与TPS三重移相等多种控制策略的建模、实现与性能对比,深入分析不同模式下变换器的功率传输特性、软开关实现条件及功率回流问题,旨在提升DAB在交直流混合微电网、能量路由器、多端口柔性互联装置等场景中的转换效率与动态响应能力。通过对ZVS(零电压切换)条件的精确控制与移相角参数的优化,有效降低了开关损耗,增强了系统整体能效与运行稳定性。该仿真模型具有良好的可扩展性,适用于复杂电能转换系统的科研验证与工程开发。; 适合人群:电力电子、电气工程及其自动化等相关专业的硕士研究生、博士生、科研人员以及从事新能源变换器、柔性输配电系统设计的工程技术人员。; 使用场景及目标:①掌握双有源桥DAB变换器的基本工作原理及其在高频隔离场合的核心优势;②深入理解三重移相控制策略的设计机理、控制自由度分配及其在效率优化中的关键作用;③构建并调试可用于科研论文撰写、项目申报或实际系统验证的高保真Simulink仿真模型,支撑理论分析与实验对比。; 阅读建议:建议结合MATLAB/Simulink平台进行动手实践,重点关注主电路拓扑搭建、移相控制模块设计、驱动信号时序配置及ZVS实现条件的仿真观,推荐通过对比SPS、DPS与TPS三种模式的稳态与动态响应曲线,深入掌握各控制策略的适用边界与优化方向。
【重要提示】本资源设置为0积分下载,若0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧