- 30
- 0
- 约3.75千字
- 约 7页
- 2016-12-02 发布于贵州
- 举报
整数连接、几里得算法、尼姆博弈
设有n个正整数,将他们连接成一排,组成一个最大的多位整数。例如:n=3时,3个整数12,345,678,连成的最大整数为
想法1:根据第一位来比,否则比第二位?特例:121,12或者123,12
王艳欣:先把所有整数位数统一,再从大到小排序。
想法2:所以可能情况列举出来?时间复杂度:O(n!)
(结合起来:先总体上排序,排序的标准根据这两个数组成数的大小(大的在前,小的在后),时间复杂度:O(n2),甚至可改进到O(nlog2n)。(不好证明,但是可测试一些特殊数据,如果通过基本上就OK了。)
===============题目要求是n个数,得两两比较=============
/*
3
13 312 343
4
7 13 4 246
*/
#include stdio.h
#include string.h
/* 转化成字符串格式来比较 */
int str_cmp(char s1[],char s2[])
{
char t1[81]=,t2[81]=;
strcat(t1,s1);
strcat(t1,s2);
strcat(t2,s2);
strcat(t2,s1);
return(strcmp(t1,t2));
}
void main()
{
int num[20],n,i,j; /* 假定不超过
原创力文档

文档评论(0)