蒟蒻成长记录

Posted Ke_scholar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蒟蒻成长记录相关的知识,希望对你有一定的参考价值。

算是记录一个求全排列的方法吧,()

 

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>
#include <map>
#include <queue>
#include <algorithm>
#include <math.h>
#include <cstdio>
#include <utility>
#define inf 0x3f3f3f3f
#define endl \'\\n\'
#define int long long

using namespace std;

const int N = 1e5+10;

//typedef long long ll;

int n,m,t,a[N];
bool vis[N];
void dfs(int x)
    //if(x > n) return;
    if(x > n)
        for(int i = 1; i <= n; i++)
         
             cout << a[i] << \' \';
         
         cout << endl;
         return ;
    
    for(int i = 1; i <= n; i ++)
    
        if(!vis[i])
            vis[i] = 1;
            a[x] = i;
            dfs(x + 1);
            vis[i] = 0;
            a[x] = 0;
        
    

signed main()

    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin >> n;
    dfs(1);
    return 0;

 

 以后可以不用一直想着那个next_permutation那个了(又难记又不好控制)

 

该方法应用P1088 [NOIP2004 普及组] 火星人 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

还可以从任意给定的顺序进行全排列

如何控制可以看看该题题解:

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>
#include <map>
#include <queue>
#include <algorithm>
#include <math.h>
#include <cstdio>
#include <utility>
#define inf 0x3f3f3f3f
#define endl \'\\n\'
#define int long long

using namespace std;

const int N = 1e5+10, M = 20;

//typedef long long ll;
int n,m,mars[N],ans;
bool return0, vis[N] ;
int a[N];
void dfs(int x)

    if(return0) return ;
    if(x > n)
    
        ans++;
        if(ans == m + 1)
            return0 = 1;
            for(int i = 1; i <= n; i++)
             cout << a[i] << \' \';
        
        return ;
    
    for(int i = 1; i <= n ; i++ )
    
        if(!ans)
            i = mars[x];//从给定的顺序进行排列
        
        if(!vis[i])
            vis[i] = 1;
            a[x] = i;
            dfs(x + 1);
            a[x] = 0;
            vis[i] = 0;
        
    

signed main()

    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin >> n >> m;
    for(int i = 1; i <= n ;i ++)
    
        cin >> mars[i];
    
    dfs(1);
    return 0;

 

2017 9 21

当前最好成绩:noip2016 初赛32.5

评级:零

写个日记类的成长日志,记录一个OI蒟蒻的成长。

(简介鄙人当前所会算法:结构体,Floyd,spfa,并查集,最小生成树,各种背包,st表,基础线段树)

今天A掉了5道题,两道DP,两道模拟,一道DFS。

终于A掉了积怨已深的多维DP和一道玄学模拟,写了写剪枝的DFS。。。

就这样吧,明天继续。。。

以上是关于蒟蒻成长记录的主要内容,如果未能解决你的问题,请参考以下文章

蒟蒻的成长

2017 9 21

10月3号 蒟蒻日记

一个蒟蒻的挣扎简单算法

【记录我的PMP成长之路】挣值、成本绩效指数、进度绩效指数等

scala成长之路:问题记录