當(dāng)前位置:
首頁(yè) >
poj2245
發(fā)布時(shí)間:2025/3/21
23
豆豆
這個(gè)一看就是dfs,必須的,今天也要把dfs在總結(jié)一下,因?yàn)橐呀?jīng)有3個(gè)月沒(méi)看了,都忘了,之前寫(xiě)了個(gè)迷宮,現(xiàn)在可好,竟然給忘了,哎,沒(méi)辦法,然后今天再去看完全不懂了,然后逼我今天再做一下總結(jié),沒(méi)辦法,dfs最重要的是遞歸,怎么遞歸,就是遞歸嗎,從頭開(kāi)始第一項(xiàng),等,然后遞歸時(shí),不斷加1,就行了,而輸出的部分呢,也是,把每一項(xiàng)都給輸出,還有關(guān)于每次都要遞歸,不是從頭開(kāi)始,而是一個(gè)一個(gè)遞歸,還有一個(gè)最重要的是,全局變量,和局部變量,今天就是這個(gè)i值,就是這次給的是全局變量,發(fā)現(xiàn)怎么都不是遞歸,一開(kāi)始沒(méi)找到原因,后來(lái)才發(fā)現(xiàn),才知道,每次,如果是全局變量,那么每次都不能產(chǎn)生一個(gè)新i值僅僅只有一個(gè)i,從而不能產(chǎn)生遞歸,而重新用方法,可以產(chǎn)生新i每次都可以產(chǎn)生新的i值,因此達(dá)到遞歸的效果,附上代碼?1?#include?<stdio.h>?2?#include?<stdlib.h>
?3?int?a[15];
?4?int?n;
?5?int?vis[15];
?6?void?dfs(int?now,?int?p)
?7?{
?8?????int?i;
?9?????if(now?==?6)
10?????{
11?????????for(i?=?0;i?<?6;?i++)
12?????????{
13?????????????printf("%d",vis[i]);
14?????????????if(i?<?5)
15?????????????printf("?");
16?????????}
17?????????printf("\n");
18?????????return?;
19?????}
20?
21?????for(i?=?p;?i?<?n;?i++)
22?????????{
23?????????????vis[now]?=?a[i];
24?????????????dfs(now+1,i+1);
25?????????}
26?
27?
28?}
29?int?main()
30?{
31?????int?i;
32?????while(scanf("%d",?&n)!=EOF&&n!=0)
33?????{
34?????????for(i?=?0;i?<?n?;?i++)
35?????????????scanf("%d",&a[i]);
36?????????//for(i?=?0;?i?<?n?;?i++)
37???????????//??printf("%d",a[i]);
38?
39?
40?????????dfs(0,0);//output,?input
41?????????printf("\n");
42?
43?????}
44?????return?0;
45?}
?3?int?a[15];
?4?int?n;
?5?int?vis[15];
?6?void?dfs(int?now,?int?p)
?7?{
?8?????int?i;
?9?????if(now?==?6)
10?????{
11?????????for(i?=?0;i?<?6;?i++)
12?????????{
13?????????????printf("%d",vis[i]);
14?????????????if(i?<?5)
15?????????????printf("?");
16?????????}
17?????????printf("\n");
18?????????return?;
19?????}
20?
21?????for(i?=?p;?i?<?n;?i++)
22?????????{
23?????????????vis[now]?=?a[i];
24?????????????dfs(now+1,i+1);
25?????????}
26?
27?
28?}
29?int?main()
30?{
31?????int?i;
32?????while(scanf("%d",?&n)!=EOF&&n!=0)
33?????{
34?????????for(i?=?0;i?<?n?;?i++)
35?????????????scanf("%d",&a[i]);
36?????????//for(i?=?0;?i?<?n?;?i++)
37???????????//??printf("%d",a[i]);
38?
39?
40?????????dfs(0,0);//output,?input
41?????????printf("\n");
42?
43?????}
44?????return?0;
45?}
轉(zhuǎn)載于:https://www.cnblogs.com/yelcoved/archive/2013/02/10/2909834.html
總結(jié)
- 上一篇: DirectX 3D相关资源参考
- 下一篇: web app指南之构建html5离线应