暴力枚举
yyz!!!
这个作者很懒,什么都没留下…
展开
-
全排列——next_permutation
不同类型的全排列next_permutation(a,a+n)就是把a的前n个按照全排列的顺序找到下一个排列,将a改成那个。 如果还有就返回true,否则返回false。一个全排列的最后一个的next_permutation虽然返回false,但是a还是会被改变成一个全排列的第一个。与之对应的还有prev_permutation。还能够自定义比较方法,和sort一样。int类型int a[]={1,3,2};int main(){ do{ for(int i=0;原创 2021-03-19 13:36:30 · 202 阅读 · 0 评论 -
P1157 组合的输出,还是n个数选k个问题
题目原题思路其实还是深搜,要输出的话那就需要一个数组来保存每一位选择好的数字。最终当index>r的时候,输出数组的前a个的值。代码#include <bits/stdc++.h>using namespace std;int n,r;//n为总数,r是要选几个数int a[25];//记录index位的数字,index最大为rint vis[25];//记录数字i有没有被用过,i最大为nvoid dfs(int index){ if(index>r){原创 2021-03-15 23:07:09 · 96 阅读 · 0 评论 -
洛谷P1036-深搜
题目原题目总结给定n个数字里面选择k个数字进行操作,使用递归操作。也类似于深搜。代码#include <bits/stdc++.h>using namespace std;int ans=0, n, k, a[25];bool prime(int x) {//判断素数的 int i; for (i = 2; i <= floor(sqrt(x)); i++) { if (x%i == 0) { return false; } } return tr原创 2021-03-15 22:09:20 · 133 阅读 · 0 评论 -
三连击
题目代码最开始的思路,九个数字,那就分别对每一位从1-9都试一遍,所以是九个for循环,其中保证前面用过的数字后面不用的方法就是在for里面设置条件让i2!=i1啥的,代码如下,但是不完全正确。#include<bits/stdc++.h>using namespace std;int main(){ int xx,yy,zz;// int a[10]={0,1,2,3,4,5,6,7,8,9};// int mark[10]={0};// mark原创 2021-03-15 15:39:07 · 120 阅读 · 0 评论 -
统计方形
题目给定n*m的正方形,求其中能够容纳的正方形和长方形的数量。原题思路暴力枚举nm的大矩形中能够容纳(n-i+1)(m-j+1)个小的长i,宽j的矩形。具体原因why,其中i==j时就是正方形。代码#include<bits/stdc++.h>using namespace std;int main(){ int n,m; long long total=0; long long zheng=0; cin>>n>>m;原创 2021-03-14 22:30:56 · 218 阅读 · 0 评论