OJ编程
-
1、两种排序方法
考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序。例如:
"car" < "carriage" < "cats" < "doggies < "koala"
2.根据字符串的长度排序。例如:
"car" < "cats" < "koala" < "doggies" < "carriage"
解:这道题默认是升序排列,所以只用考虑升序。这道题用到lstring对象的size()函数,在用vector存储这些字符串之后,遍历这个vector。用两个bool型的变量来判断是否是按长度排序和是否是按字典序排列。最后通过这两个bool值的变量就可以输出结果了。
bool notleng = false;
bool notdic = false;
for(size_t i = 1; i < v.size(); ++i)
{
if(v[i].size() < v[i - 1].size())
{
notleng = true;
}
if(v[i] < v[i - 1])
{
notdic = true;
if(notleng)
break;
}
}
-
2、求最小公倍数
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
解:这道题完全就是对数学知识的运用了,怎么做都能做出列来。但是主要是对其的优化,看能不能做的代码最简单或者效率更高。其中我的思路是,如果当两个数中大的那个数不是最小哦公倍数之后,就从较大那个数开始暴力搜寻,直到搜寻较小那个数这么多次。
for(int i = 1; i <= min; ++i)
{
int tmp = max * i;
if(tmp % min == 0)
{
cout << tmp;
return 0;
}
}
-
3、源代码地址
戳标题进入参考源代码