暴力
其实暴力这个思想是真的很简单,注意的地方就是要优化暴力的算法,做出合理的跳出,如果算法不优化的话可能会有超时的情况。
有一个例题OJ1613
题目描述:
在水木林浏览外网的时候看到有个国家只有1分,2分和3分三种硬币,水木林就跟头疼,毕竟水木林很有钱,卡上的数额兑换成硬币就会出现很多种情况 请你帮助水木林解决这个头疼的问题
输入
多组输入
输出
情况总数longlong范围内
样例输入
1
样例输出
1
解决代码
#include<iostream>
using namespace std;
const long long maxn = 1111111111;
int main(){
int a = 1 , b = 2 , c = 3;
long long sum = 0;
int k;
while(cin>>k){
sum = 0;
for(int i = 0; i <= k/3; i ++){
for(int j = 0; j <= k/2; j ++){
if(k - 3 * i - 2 * j >= 0) sum++;
else break;
}
}
cout<<sum<<endl;
}
return 0;
}
如果你没写这个跳出的话,程序就会超时,不行的可以试一下,当然这个题也可以用dfs做
暴力就是直接遍历每一种情况,然后判断,得出正确的情况。
再来一个题嘛
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
典型的一个暴力
再来一个吧
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
这个题的思路就是可以遍历所有5位数和6位数,看哪些数满足情况。