zoukankan      html  css  js  c++  java
  • CF903E Swapping Characters(暴力)

    题意:

    给出一组字符串,每个字符串都由同一个位置的母串交换两个位置的字母生成,询问母串,或者确定不存在。

    题解:

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=5005;
    int n,m,d[maxn];
    char s[maxn][maxn];
    map<char,int> mp[maxn];
    bool f;
    int main () {
        cin>>n>>m;
        for (int i=1;i<=n;i++) cin>>s[i];
        for (int j=0;j<m;j++) {
            mp[1][s[1][j]]++;
            if (mp[1][s[1][j]]>1)  f=true;
        }
        for (int i=2;i<=n;i++) {
            for (int j=0;j<m;j++) {
                mp[i][s[i][j]]++;
                if (s[i][j]!=s[1][j]) d[i]++;
            }
            if (mp[i]!=mp[1]) return printf("-1
    "),0;
        }
        for (int i=0;i<m;i++) {
            for (int j=i+1;j<m;j++) {
                int ff=1;
                for (int k=2;k<=n;k++) {
                    int tt=d[k];
                    if (s[k][i]!=s[1][i]) tt--;
                    if (s[k][i]!=s[1][j]) tt++;
                    if (s[k][j]!=s[1][j]) tt--;
                    if (s[k][j]!=s[1][i]) tt++;
                    if (!((tt==2)||(tt==0&&f))) {
                        ff=0;break;
                    }
                }
                if (ff) {
                    swap(s[1][i],s[1][j]);
                    return printf("%s
    ",s[1]),0;
                }
            }
        }
        return printf("-1
    "),0;
    }
  • 相关阅读:
    竞争冒险及其消除
    [C++]重复单词统计
    [C++]智能指针与常规new
    基于go的生产者消费者模型
    cin的返回对象
    为什么map对象不能使用stl中的sort函数
    opencv
    operator ->
    记一次源码分析
    iconfig1
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/13554237.html
Copyright © 2011-2022 走看看