社区
C语言
帖子详情
谁有"八皇后"原代码?(分不够再加,或者另起一帖加分)
wandou999
2004-04-18 10:39:09
re!!
...全文
111
3
打赏
收藏
谁有"八皇后"原代码?(分不够再加,或者另起一帖加分)
re!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wandou999
2004-04-18
打赏
举报
回复
TO:cngdzhang()
TO:cgsw12345(cgsw)
小弟是学JAVA的,但对C挺感兴趣的,小弟不失言,请cngdzhang() 和cgsw12345(cgsw)
别走开,另起帖加分!!!
cngdzhang
2004-04-18
打赏
举报
回复
tc编写的:
输入皇后的个数即可
#include <stdio.h>
#include <stdlib.h>
int f1[100],f2[100],f3[100],total,p[100],totalmethod;
void print()
{
int i,j;
totalmethod++;
for(i=1;i<=total;i++)
{
for(j=1;j<=total;j++)
{
if(p[j]==i) printf("*");
else printf("-");
}
printf("\n");
}
printf("\nmethod : %d\n\n",totalmethod);
}
int placeable(int i,int j)
{
return(!(f1[i] || f2[i-j+total] || f3[i+j]));
}
void tryit(int n)
{
int i;
for(i=1;i<=total;i++)
{
if(!placeable(i,n)) continue;
f1[i]=1;
f2[i-n+total]=1;
f3[i+n]=1;
p[n]=i;
if(n==total) print();
else tryit(n+1);
f1[i]=0;
f2[i-n+total]=0;
f3[i+n]=0;
p[n]=0;
}
}
void main()
{
int i;
printf("How many queens do you want to place ?");
scanf("%d",&total);
if(total<=0) exit(0);
tryit(1);
}
cgsw12345
2004-04-18
打赏
举报
回复
这是N皇后问题的回溯法,非递归实现.此算法对初学者有难度,最好去参考书.这个问题也是回溯法的经典例题,推荐自己去实践.还有,我贴的程序在TC3.0下调试通过.
#include <iostream.h>
#include <stdio.h>
#include <math.h>
#include <dos.h>
enum bool{false, true};
class Queen{
friend int nQueen(int);
private:
inline bool Place(int k);
void Backtrack(void);
int n, *x;
long sum;
};
inline bool Queen::Place(int k)
{
int j;
for (j = 1; j < k; j++)
if ((abs(k - j) == abs(x[j] - x[k])) || (x[j] == x[k])) return false;
return true;
}
void Queen::Backtrack(void)
{
x[1] = 0;
int k = 1;
while (k > 0){
x[k] += 1;
while ((x[k] <= n) && !(Place(k)))
x[k] += 1;
if (x[k] <= n)
if (k == n)
sum++;
else {
k++;
x[k] = 0;
}
else
k--;
}
}
int nQueen(int n)
{
Queen X;
X.n = n;
X.sum = 0;
int *p = new int[n+1];
for (int i = 0; i <= n; i++)
p[i] = 0;
X.x = p;
X.Backtrack();
delete []p;
return X.sum;
}
int main()
{
int n;
struct time t1, t2; //取系统时间.
gettime (&t1);
cout << "input n = ";
cin >> n;
cout << nQueen(n) << endl;
gettime (&t2);
cout << (t2.ti_sec - t1.ti_sec) + (t2.ti_hund-t1.ti_hund)*1.0/100;
return 0;
}
基于超局部模型与自抗扰ESO观测器的无模型预测电流控制改进策略研究(Simulink仿真实现)
内容概要:本文围绕“基于超局部模型与自抗扰ESO观测器的无模型预测电流控制改进策略”展开研究,提出一种结合超局部模型(ULM)与扩张状态观测器(ESO)的无模型预测电流控制(MFPCC)改进方法,旨在提升永磁同步电机(PMSM)电流环的动态响应性能与抗干扰能力。该策略利用超局部模型对系统行为进行局部逼近,避免依赖精确数学模型,同时引入自抗扰控制中的ESO实时观测并补偿系统内外部扰动,有效抑制参数摄动、负载变化及模型不确定性带来的影响。研究通过Simulink搭建完整的控制系统仿真模型,对传统MFPCC与所提改进策略进行对比
分
析,验证了新方法在电流跟踪精度、响应速度和鲁棒性方面的优越性。; 适合人群:具备电机控制、现代控制理论及Simulink仿真基础的电气工程、自动化及相关专业的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高性能电机驱动系统中电流环控制器的设计与优化;②为无模型控制与自抗扰控制的融合应用提供技术参考;③支撑相关课题的仿真验证、论文复现与创新方法研究。; 阅读建议:建议读者结合Simulink仿真模型深入理解控制结构与参数整定过程,重点关注ESO的观测性能与扰动补偿机制,并可通过改变负载条件、参数偏差等工况进行鲁棒性测试,进一步掌握该改进策略的核心优势与适用边界。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章