1.bfs寬度優先搜尋
#include
#include
#include
using
namespace std;
void
bfs(
int n)
myqueue.
push
(current*10)
; myqueue.
push
(current*10+
1);}
}int
main()
return0;
}
3的過程應該就是(右為隊首)
11 10;
101 100 11;
111 110 101 100;
1000 1001 111 110 101;
2.dfs深度優先搜尋
#include
#include
#include
#include
using
namespace std;
int direction[8]
[2]=
,,,,
,,,}
;const
int maxn=30;
bool visit[maxn]
[maxn]
;bool
dfs(
int x,
int y,
int step,string answer,
int p,
int q)
for(
int i=
0;i<8;
++i)
visit[nx]
[ny]
=true
;char col= ny+
'a';
char row= nx+
'1';if(
dfs(nx,ny,step+
1,answer+col+row,p,q)
)//此時判斷的下一步是否能走
visit[nx]
[ny]
=false
;//此時不能走,所以我們還沒有訪問過nxny。
}return
false;}
intmain()
return0;
}
#include
#include
#include
#include
using
namespace std;
const
int maxn=25;
int sticks[maxn]
;bool visit[maxn]
;bool
dfs(
int sum,
int num,
int side,
int m)
for(
int i=
0;i) visit[i]
=true;if
(sum+sticks[i]
==side)
else
visit[i]
=false;}
return
false;}
intmain()
int side=length/4;
memset
(visit,
false
,sizeof
(visit));
if(dfs(0,
0,side,m)
)printf
("yes\n");
else
printf
("no\n");
}return0;
}
但這樣可能找到之後資源以及耗盡,所以最好剪枝。
#include
#include
#include
#include
using
namespace std;
const
int maxn=25;
int sticks[maxn]
;bool visit[maxn]
;bool
dfs(
int sum,
int num,
int position,
int side,
int m)
int sample =0;
for(
int i=position;i
) visit[i]
=true;if
(sum+sticks[i]
==side)
else
visit[i]
=false;}
return
false;}
bool
compare
(int x,
int y)
intmain()
if(length%4!=
0)// 邊長不為整數肯定不行
int side=length/4;
memset
(visit,
false
,sizeof
(visit));
sort
(sticks,sticks+m,compare);if
(sticks[0]
>side)
// 最大的都大於了邊長肯定不行 if(
dfs(0,
0,0,side,m)
)printf
("yes\n");
else
printf
("no\n");
}return0;
}
queue的應用
#include
#include
#include
#include
using
namespace std;
struct complex
bool
operator
<
(complex c)
const
else}}
;int
main()
else
}else}}
return0;
}
哈弗曼樹再書上是那種,利用求每個葉子節點的權值*高度 的和來求出帶權路徑長度。同樣我們可以用葉子節點的雙親所求的權值(我不知道是不是這樣說啊。。),然後利用那幾個點的權值求和也可以得到同樣的值。
結果均為37.
#include
#include
#include
using
namespace std;
intmain()
int answer=0;
while
(mypriorityqueue.
size()
>1)
printf
("%d"
,answer);}
return0;
}
雜湊表應用map:紅黑樹的查詢,插入,刪除,logn的複雜度。
unordered_map:hash table,查詢,插入,刪除,log1的複雜度
#include
#include
#include
using
namespace std;
mapint>mymap;
intmain()
it=mymap.
find
("bob");
if(it!=mymap.
end())
else
return0;
}
#include
#include
#include
#include
using
namespace std;
map student;
intmain()
int m;
scanf
("%d"
,&m)
;while
(m--
)else
}return0;
}
王道複試機試(2)
學號姓名排名 用sort函式 include include include using namespace std struct student student arr 100 bool compare student x,student y else return x.score int mai...
2018 BIT複試機試
1 輸入乙個只含有英文本母的字串,輸出最大回文子串的長度及此長度回文子串的個數 回文不區分大小寫 樣例 輸入abaab 最大回文子串為baab 輸出4 1 輸入abcbbb 最大回文子串為bcb和bbb 輸出 3 2 實際測試樣例 輸入 a b 輸出 1 2 輸入 abcbb 輸出 3 1 輸入 a...
北航複試機試之素數
輸入乙個整數n 2 n 10000 要求輸出所有從1到這個整數之間 不包括1和這個整數 個位為1的素數,如果沒有則輸出 1。輸入有多組資料。每組一行,輸入n。輸出所有從1到這個整數之間 不包括1和這個整數 個位為1的素數 素數之間用空格隔開,最後乙個素數後面沒有空格 如果沒有則輸出 1。示例1 10...