1 条题解

  • 0
    @ 2024-12-24 9:54:31

    C++ :

    #include <iostream> 
    #include <algorithm>
    #include <map>
    #include <vector>
    #include <string>
    using namespace std;
    
    const int N = 10;
    int fact[N + 1];
    
    int Solve(string word)
    {
    	int vec[N + 1] = { 0 };
    	char src, dest;
    	int i, j;
    	reverse(word.begin(), word.end());//简单翻转一下字符串,方便下面做处理而已
    	for (i = 0; i < word.length(); i++)
    	{
    		src = word[i];
    
    		for (j = 0; j < i; j++)
    		{
    			dest = word[j];
    			if (dest <src)
    				vec[i]++;
    		}
    	}
    
    	
    	int sum = 0;
    	for (i = 0; i < word.length(); i++)
    	{
    		sum += vec[i] * fact[i];
    	}
    
    	return sum;
    }
    
    
    
    
    int main()
    {
    	fact[0] = 1;
    	for (int i = 1; i <= N; i++)
    	{
    		fact[i] = i * fact[i - 1];
    	}
    	string word;
    	while (cin >> word)
    	{
    		cout << Solve(word) << endl;
    	}
    
    	//system("pause");
    	return 0;
    }
    
    • 1

    信息

    ID
    1191
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者