暴力枚举一点也不暴力,洛谷题单最后三题还是没做出来,题解也没看懂讲的都是什么搜索七七八八的,看来只能后面学了回来补。
个人感觉其实暴力枚举就是要尽可能地压榨运行时间,然后用的也是什么递归搜索for之类的
1.统计方形
a.如果只是单纯的数格子这种根本不可能做的出来,仔细发现若把每个点当作正方形的一个顶点那么这样子就不会重复,比如当作右下角的话就只要算他的左上方斜对角的点,其余的与他相连都是长方形
2.烤鸡
我十连for循环做的...看题解好像得用搜索,又只能后面补了
3.三连击
for循环把每一个的基数弄出来后面乘对应的比例,之后把三个数逐一拆解,判断是不是唯一,是的话就输出
4.选数
递归来获取不重复的三个数然后来相加,看代码吧,最近码力真的要加强了
int rule(int choose_left_num,int already_sum,int start,int end){//choose_left_num为剩余的k,already_sum为前面累加的和,start和end为全组合剩下数字的选取范围;调用递归生成全组合,在过程中逐渐把K个数相加,当选取的数个数为0时,直接返回前面的累加和是否为质数即可 if(choose_left_num==0)return isprime(already_sum); int sum=0; for(int i=start;i<=end;i++){ sum+=rule(choose_left_num-1,already_sum+x[i],i+1,end); } return sum;
5.组合的输出
和上一题有异曲同工之秒啊
void dfs(int k){//搜索第k个数 int i; if(k>r){ for(i=1;i<=r;i++){ cout<<setw(3)<<a[i];//输出,场宽为三 } cout<<endl; return ;//回到前一层 } for(i=a[k-1]+1;i<=n;i++){ a[k]=i; dfs(k+1);//直接进行下一次调用 } }
6.全排列
用一个函数就好了 next_permutation可以把[start,next)这个数组排序为下一个字典序的数组
7.火星人
也是用上一题说的函数,for循环它然后输出
8.涂国旗
没啥说的就三连for了,三连for的依据是按照边界,然后再第三层for里面用三个并列的for循环来获取要改变的格子数
9.first step
不懂说啥了感觉万变不离其宗了
int n, m, r, ans, dx[2] = {0, 1}, dy[2] = {1, 0}; char mapq[105][105]; void skim(int x, int y, int i, int j) { if (j > r) { ++ans; return ; } if (mapq[x][y] != '.' || x < 0 || y < 0 || x >= n || y >= m) return ; skim(x + dx[i], y + dy[i], i, j + 1); return ; } int main() { cin >> n >> m >> r; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> mapq[i][j]; } // cin >> map[i]; } for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (mapq[i][j] == '.') for (int k = 0; k < 2; k++) skim(i, j, k, 1); if (r == 1) ans /= 2; cout << ans << endl; return 0; }
10.回文质数
这个不说了
11.火柴棒不等式
先数组开一个表示每一个数字的火柴数,然后两个for循环,再把每一个数字逐一拆开
#include <bits/stdc++.h> using namespace std;int nu[10]={6,2,5,5,4,5,6,3,7,6}; int matches(int num){ int i,k=0; for(i=num;i!=0;i/=10)k+=nu[i%10]; if(num==0)k+=nu[0]; return k; } int main(){ int i,j,all=0,n; cin>>n; for(i=0;i<=800;i++)for(j=0;j<=800;j++)if(matches(i)+matches(j)+matches(i+j)+4==n)all++; //如果这个算式加起来的火柴棒总数刚好用完所有火柴棒就把数量往上加 cout<<all; return 0; }
标签:洛谷,暴力,start,int,sum,++,枚举,num,return From: https://www.cnblogs.com/sixsix666/p/18006448