1:判断n个元素集合a中是否存在若干个数和为k?
样例输入:n=3 a={1,2,4,7} k=10样例输出:YES因为存在 1+2+7=10
#include<bits/stdc++.h>
using namespace std;
const int MAX_N =
10;
int a[MAX_N]={
1,
2,
4,
7};
int n, k;
void input() {
n =
3;
k =
15;
}
bool dfs(
int i,
int sum) {
if (i == n)
return sum == k;
if (dfs(i +
1, sum))
return true;
if (dfs(i +
1, sum + a[i]))
return true;
return false;
}
int main() {
if (dfs(
0,
0))
printf(
"Yes\n");
else printf(
"No\n");
return 0;
}
2 AOJ1580
#include<bits/stdc++.h>
using namespace std;
const int MAX_N =
20;
int a[MAX_N];
int n, k;
bool dfs(
int i,
int sum) {
if (i == n)
return sum == k;
if (dfs(i +
1, sum))
return true;
if (dfs(i +
1, sum + a[i]))
return true;
return false;
}
int main() {
while (~
scanf(
"%d", &n)) {
int tot =
0;
for (
int i =
0; i < n; i++) {
scanf(
"%d", &a[i]);
tot += a[i];
}
if (tot %
2 ==
0) {
k = tot /
2;
if (dfs(
0,
0))
printf(
"Of course,I can!\n");
else
printf(
"Sorry,I can't!\n");
}
else
printf(
"Sorry,I can't!\n");
}
return 0;
}
3. 统计水洼POJ2386
Sample Input
10 12
W.......
.WW.
.WWW....
.WWW
...
.WW..
.WW.
........
.WW.
........
.W..
.
.W.....
.W..
.W.W....
.WW.
W
.W.W....
.W.
.W.W.....
.W.
.
.W......
.W.
Sample Output 3
#include<stdio.h>
const int MAX_N =
100;
const int MAX_M =
100;
int N, M;
char field[MAX_N][MAX_M +
1];
void dfs(
int x,
int y) {
field[x][y] =
'.';
for (
int dx = -
1; dx <=
1; dx++)
for (
int dy = -
1; dy <=
1; dy++) {
int nx = x + dx;
int ny = y + dy;
if (nx >=
0 && nx < N &&
0 <= y && ny < M && field[nx][ny] ==
'W')dfs(nx, ny);
}
}
void solve() {
int res =
0;
for (
int i =
0; i < N; i++)
for (
int j =
0; j < M; j++) {
if (field[i][j] ==
'W') {
dfs(i, j);
++res;
}
}
printf(
"%d\n", res);
}
int main() {
while(~
scanf(
"%d%d", &N, &M)) {
for (
int i =
0; i < N; i++)
scanf(
"%s", field[i]);
solve();
}
return 0;
}
赵老师《面向AOJ的python编程直播》
[斗鱼链接]https://www.douyu.com/2197341?_r=0.1352293670643121 直播及辅导群【安科ACM官方群】391668336 GIT 代码网址:https://git.ahstu.cc/zj/zjPy