概述
自己构造了一个map,自定义了map的比较函数,代码通过率为50%,不知道为什么这样的复杂度还不能通过?
代码如下
#include <iostream>
#include <vector>
#include <map>
#include <stack>
using namespace std;
class Compare
{
public:
bool operator ()(const int i1, const int i2)
{
stack<int> stack1;
stack<int> stack2;
CutNunber(i1, stack1);
CutNunber(i2, stack2);
while (!stack1.empty() && !stack2.empty())
{
if (stack1.top() != stack2.top())
{
return stack1.top() < stack2.top();
}
stack1.pop();
stack2.pop();
}
if (stack1.empty())
{
return true;
}
else
{
return false;
}
}
private:
void CutNunber(const int iNum, stack<int> &stackResult)
{
int iTemp = iNum;
while (iTemp / 10 != 0)
{
stackResult.push(iTemp % 10);
iTemp = iTemp / 10;
}
stackResult.push(iTemp);
}
};
typedef map<int, int, Compare> mapDictinary;
int main()
{
int m;
int n;
cin >> n >> m;
mapDictinary mapData;
for (int i = 1; i <= n; i++)
{
mapData.insert(make_pair(i, i));
}
mapDictinary::iterator it = mapData.begin();
if (m == 1)
{
cout << it->first;
}
else
{
while (m != 1)
{
m--;
it++;
}
}
cout << it->first;
return 0;
}
最后
以上就是温柔斑马为你收集整理的给定整数n和m, 将1到n的这n个整数按字典序排列之后, 求其中的第m个数。的全部内容,希望文章能够帮你解决给定整数n和m, 将1到n的这n个整数按字典序排列之后, 求其中的第m个数。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复