zoukankan      html  css  js  c++  java
  • POJ-1270-Following Orders

    链接:https://vjudge.net/problem/POJ-1270

    题意:

    给n个字符,同时给m个约束条件,求满足约束条件下的所有排列情况。

    思路:

    跟POJ1128很像。

    按照约束建图。DFS跑一遍就行。

    代码:

    #include <iostream>
    #include <memory.h>
    #include <vector>
    #include <map>
    #include <algorithm>
    #include <cstdio>
    #include <math.h>
    #include <queue>
    #include <string>
    #include <stack>
    #include <iterator>
    #include <stdlib.h>
    #include <time.h>
    #include <assert.h>
    
    using namespace std;
    typedef long long LL;
    const int MAXN = 30 + 10;
    int Vis[MAXN];
    int in[MAXN];
    int M[MAXN][MAXN];
    char res[MAXN];
    int cnt;
    
    void DFS(int num)
    {
        if (num == cnt)
        {
            res[num] = '';
            cout << res << endl;
            return;
        }
    
        for (int i = 0;i < 26;i++)
        {
            if (in[i] == 0 && Vis[i] == 1)
            {
                in[i] = -1;
                for (int j = 0;j < 26;j++)
                    if (M[i][j])
                        --in[j];
                res[num] = 'a'+i;
                DFS(num+1);
                in[i] = 0;
                for (int j = 0;j < 26;j++)
                    if (M[i][j])
                        ++in[j];
            }
        }
    }
    
    int main()
    {
        string s;
        while (getline(cin, s))
        {
            cnt = 0;
            memset(in, 0, sizeof(in));
            memset(Vis, 0, sizeof(Vis));
            memset(M, 0, sizeof(M));
            for (int i = 0;i < s.length();i++)
                if (s[i] != ' ')
                    Vis[s[i]-'a'] = 1, ++cnt;
            getline(cin, s);
            for (int i = 0;i < s.length();)
            {
                int l = s[i]-'a';
                int r = s[i+2]-'a';
                i += 4;
                if (!M[l][r])
                    M[l][r] = 1;
                ++in[r];
            }
            DFS(0);
            cout << endl;
        }
    
        return 0;
    }
    

      

  • 相关阅读:
    Alpha冲刺总结
    软工实践个人总结
    9组Beta冲刺3/5
    9组Beta冲刺总结
    9组Alpha冲刺6/6
    9组Beta冲刺2/5
    9组Alpha冲刺5/6
    9组Beta冲刺1/5
    cocos2d: 使用TexturePacker , pvr.ccz, CCSpriteBatchNode, CCSpriteFrameCache
    cocos2d: 设置容器透明度及添加UIViewController
  • 原文地址:https://www.cnblogs.com/YDDDD/p/10724502.html
Copyright © 2011-2022 走看看