Algorithm&Arts
all about code
导航
C++博客
首页
新随笔
联系
聚合
管理
统计
随笔 - 1
文章 - 0
评论 - 0
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔档案
2008年11月 (1)
搜索
最新评论
我对于递归的理解~~
#include
<
iostream
>
#include
<
stdlib.h
>
using
namespace
std;
int
n,data[
100
];
void
solve(
int
t)
{
//
for (int i=1;i<=n;i++)
//
cout<<data[i]<<' ';
//
cout<<endl;
if
(t
==
n)
{
//
system("pause");
//
cout<<"final";
for
(
int
i
=
1
;i
<=
n;i
++
)
cout
<<
data[i]
<<
'
'
;
cout
<<
endl;
return
;
}
for
(
int
i
=
t;i
<=
n;i
++
)
{
swap(data[i],data[t]);
solve (t
+
1
);
swap(data[i],data[t]);
}
}
int
main()
{
cin
>>
n;
for
(
int
i
=
1
;i
<=
n;i
++
)
data[i]
=
i;
solve(
1
);
cin
>>
n;
}
/**/
/*
我发现从扎实的基础必须从深刻理解基本知识 开始
这个递归的过程是这样的
首先 第一位跟第一位交换
一直交换T==N
此时输出没有交换的情况
然后返回上一层递归
在这一层里面T=N-1
而且循环元素是第二个,所以先跟第三个交换
然后再返回上一层
以第一个为循环元素
跟第二个循环
然后再以第二个元素……
如此往复
把整个图表构造出来~~~
哇咔咔 自己想出来了 OH YEAH!
3
1 2 3
1 3 2
2 1 3
2 3 1
3 2 1
3 1 2
*/
posted on 2008-11-22 11:04
Simon
阅读(164)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
博客园最新博文
博问
管理