关于全排列算法以及一些小问题的疑问(文章写得渣见谅)
Tofloor
poster avatar
kikyoulzg
deepin
2017-09-18 07:30
Author
c&行列式
欢迎吐槽
Reply Favorite View the author
All Replies
avatar
133******90
deepin
2017-09-20 17:53
#1
打印hallo的语句不在for语句里面。。。

全排列以{A,B,C}为例:
第一次,A和A互换位置 (A和A互换位置,位置不变),还是A,{B,C};  {B,C}继续做全排列(递归);恢复A和A的位置。
第二次,A和B互换位置(第二个数与第一个数交换),变成B,{A,C};  {A,C}继续做全排列(递归);恢复A和B的位置。
第三次,A和C互换位置(第三个数与第一个数交换),变成C,{B,A};  {B,A}继续做全排列(递归);恢复A和C的位置。

这就是“将整组数中的所有的数分别与第一个数交换,这样就总是在处理后n-1个数的全排列。”
Reply View the author
avatar
kikyoulzg
deepin
2017-09-24 07:42
#2
本帖最后由 kik13143you 于 2017-9-23 23:55 编辑
https://bbs.deepin.org/post/145686
打印hallo的语句不在for语句里面。。。

全排列以{A,B,C}为例:

竟然有人回了谢谢!!感觉从原理到代码的实现让我想是想不出来的,写着算法的人是咋想的呢
思路:如你所说
{1,2,3}运行结果:
1 3 2  
2 1 3  
2 3 1  
3 2 1  
3 1 2

跟着代码演算:如图








Reply View the author
avatar
133******90
deepin
2017-09-24 08:03
#3
以前学的时候也没弄懂,前几天按照自己的思路试了一下,竟然一下子就弄出来了。很多事情就是这样,刚碰到的时候完全没弄懂,但是只要你有认真的去思考这个问题,过段时间,答案就自己出来了。
Reply View the author
avatar
kikyoulzg
deepin
2017-09-24 08:18
#4
https://bbs.deepin.org/post/145686
以前学的时候也没弄懂,前几天按照自己的思路试了一下,竟然一下子就弄出来了。很多事情就是这样,刚碰到的 ...

本来想自己写个程序解行列式的,#include
#define number 100
#define NUMBER 100
int main(){
    static int i,j,I,J ,a [number][NUMBER];
    printf("i:") ; scanf("%d",&i);
    printf("j:") ; scanf("%d",&j);
    printf("input:\n");
    for (I=0;I         for(J=0;J             scanf("%d",&a[I][J]);
    }
    for (I=0;I         for(J=0;J            printf("a[%d][%d]=%d\n",I,J,a[I][J]);
    }
    return 0;
}                       /*读取行列式*/
不过运算想不到就谷歌了一下,还真有2333
Reply View the author
avatar
133******90
deepin
2017-09-24 17:11
#5
https://bbs.deepin.org/post/145686
本来想自己写个程序解行列式的,#include
#define number 100
#define NUMBER 100

由于计算机的计算不是无限位数的计算,有截断的问题,这样得出的结果有时候并不是最接近正确值的。这些都包含在 数值计算这门课程,一门当初想学好却没有学懂的课程。
Reply View the author
avatar
kikyoulzg
deepin
2017-09-24 18:37
#6
https://bbs.deepin.org/post/145686
由于计算机的计算不是无限位数的计算,有截断的问题,这样得出的结果有时候并不是最接近正确值的。这些都 ...

有个学数学专业的朋友,大一学的是数学分析,不知他们用不用学数值计算咧
Reply View the author
avatar
kikyoulzg
deepin
2017-09-24 18:44
#7
https://bbs.deepin.org/post/145686
由于计算机的计算不是无限位数的计算,有截断的问题,这样得出的结果有时候并不是最接近正确值的。这些都 ...

这个精确度的问题会经常需要考虑吗,双精度浮点型应该是最精确的了吧
Reply View the author
avatar
Lyvnee
deepin
2017-09-24 19:05
#8
直接上MATLAB
Reply View the author