啊哈 算法读书笔记 第三章 很暴力的枚举

简介: 算法读书笔记 第三章 很暴力的枚举

11.png12.png#include<stdio.h>

int main()

char a[20]【21】;//假设这里的地图大小不超过20*20

int i,sum,map=0,p,q,x,y,n,mi

//读入n和m,n表示有多少行字符,m表示每行有多少列

scanf ("%dd",&n,&m);

//读入n行字符

for(i=0:1<=n-1;i++)

scanf("卷s",a[i]):

/用两重循环枚举地图中的每一点

for(i=0:i<=n-1;i++)

for(j=0;j<=m-1:j++】

//首先判断这个点是不是平地,是平地才可以被放置炸弹

if(a[i][j]=='.')

aum=0;//sum用来计数(可以消灭的敌人数),所以需要初始化为0

//将当前坐标1,复制到两个新变量x,y中,以便向上下左右四个方向分别统计

可以消灭的敌人数

//向上统计可以消灭的敌人数

x■i;y=j:

whi1e(a【x】[y]!='#'】//判断是不是墙,如果不是墙就继续

/如果当前点是敌人,则进行计数

iE(a[x][y]=='G')

um++;

/1x-一的作用是继续向上统计

X-一

/向下统计可以消灭的敌人数

x=1;y=51

while(a[x][y]!='#')

if(a[x][y]=='G')

g1m中+:

//x++的作用是继续向下统计

X++;

//向左统计可以消灭的敌人数

x=i;y=ji

while(a[x][y]!='#')

if(a[x】[y]=="G"】

sum++;

//y--的作用是继续向左统计

Y--;

//向右统计可以消灭的敌人数

x=i;y=j;

whi1e(a[x][y]1='#')

iE(a[x][y]=='G')

8um++:

//y++的作用是继续向右统计

y++

/更新map的值

if (sum>map)

//如果当前点所能消灭的敌人总数大于map,则更新map

map=sum;

//并用p和q记录当前点的坐标

p=i:

q-j;

printf("将炸弹放置在(d,d),最多可以消灭d个敌人\n",P,q,map):

getchar();getchar();

return 0;

13.png作者的好思路:

14.png#include <stdio.h>

int fun(int x)

(

int num=0;//用来计数的变量,一定要记得初始化

intf[10]={6,2,5,5,4,5,6,3,7,6};/用一个数组来记录0~9每个数字需要用多少根火

长棍

whi1e(x/10!=0)//如果x/10的商不等于0的话,说明这个数至少有两位

//获得x的末尾数字并将此数所需要用到的火柴棍根数累加到num中

num+=f[x号10];

×=×/10://去掉x的末尾数字,例如x的值为123则现在x的值为12

//最后加上此时x所需用到的火柴棍的根数(此时×一定是一位数)

num +f[x];

return num;//返回需要火柴棍的总根数

int main()

{

inta,b,c,m,i,sum=0;//sum是用来计数的,因此一定要初始化为0

scanf("号d",&m);//读入火柴棍的个数

//开始枚举a和b

for(a=0;a<=1111;a++)

f

for(b=0:b<=1111:b++)

c=a+b;//计算出c

//fu是我们自己写的子函数,用来计算一个数所需要用火柴棍的总数

/当a使用的火柴棍根数+b使用的火柴棍的根数+c使用的火柴棍的根数之和恰

好等于m-4时,则成功地找出了一组解

if(fun (a)+fun(b)+fun(c)==m-4)

printf("8d+8d=8d\n",a,b,c);

sum++;

printf("一共可以拼出号d个不同的等式",sum);

getchar();getchar();

return 0;

数的全排列:

15.png求123的全排序:

for(a=1;a<=3;a++)

   for(b=1;b<=3;c++)

if(a!=b&&a!=c&&b!=c)

   printf("&d&d&d\n",a,b,c);

求1234的全排序和这个也是十分类似

 

但是如果要去求到n的怎么办?

 

尽请期待下一章节——万能的搜索

目录
打赏
0
0
0
0
17
分享
相关文章
|
12月前
|
class083 动态规划中用观察优化枚举的技巧-下【算法】
class083 动态规划中用观察优化枚举的技巧-下【算法】
95 2
|
12月前
|
class082 动态规划中用观察优化枚举的技巧-上【算法】
class082 动态规划中用观察优化枚举的技巧-上【算法】
109 2
程序员必知:《程序设计与算法(二)算法基础》《第一周枚举》熄灯问题POJ
程序员必知:《程序设计与算法(二)算法基础》《第一周枚举》熄灯问题POJ
59 0
|
12月前
|
枚举算法的介绍
枚举算法的介绍
109 0
枚举算法:解决问题的穷举之道(二)
枚举算法:解决问题的穷举之道(二)
枚举算法:解决问题的穷举之道(一)
枚举算法:解决问题的穷举之道(一)

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等