TopCoder SRM 644 Div2 Problem 500 - LostCharacter (贪心)

题意

给出一些字符串数组,可能包含有?。现在要求输出每个字符串在按字典序排序后的最靠前的位置。

思路

一开始看不懂题目,以为是要一起考虑的。原来是每个字符串分开考虑。

因为数据量很小,所以直接无脑暴力。

对于每个字符串,把它里面的?都改成a,然后把其他的字符串里的?都改成z,这样就能使位置尽量靠前。

顺便吐槽一下,连了一个上午加半个下午的TC,终于给连上了。

代码

class LostCharacter {
    public:
    vector<int> getmins(vector<string> str) {
        vector<int> ans;
        vector<string> tmp;
        tmp = str;
        if (str.empty()) return ans;
        for (int i = 0; i < str.size(); i++)
        {
            string target = str[i];
            for (int j = 0; j < target.size(); j++)
                if (target[j] == '?') target[j] = str[i][j] = 'a';
            for (int j = 0; j < str.size(); j++)
            {
                if (i == j) continue;
                for (int k = 0; k < str[j].size(); k++)
                    if (str[j][k] == '?') str[j][k] = 'z';
            }
            sort(str.begin(), str.end());
            ans.push_back(lower_bound(str.begin(), str.end(), target) - str.begin());
            str = tmp;
        }
        return ans;
    }
};

Powered by Jekyll and Theme by solid