#include <iostream>
#include <string.h>
#include <cmath>
#include <math.h>
#include <algorithm>
using namespace std;
struct version{
int zixulie[100];
int length=0;
}a[100];
bool cmp(struct version a,struct version b){
for(int i=0;i<=min(a.length,b.length);i++){
if(a.zixulie[i]>b.zixulie[i])
return false;
else if(a.zixulie[i]<b.zixulie[i])
return true;
}
if(a.length<b.length) return true;
else return false;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
// getchar();
char sep = '.';
int m=0;
while(sep=='.'){
scanf("%d%c",&a[i].zixulie[m],&sep);
a[i].length++;
m++;
}
}
sort(a,a+n,cmp);
// cout << "-----" << endl;
for(int i=0;i<n;i++){
for(int j=0;j<a[i].length;j++)
{
printf("%d",a[i].zixulie[j]);
if(j!=a[i].length-1) printf(".");
}
printf("\n");
}
return 0;
}
这个题可以分成几个部分:
1.填入,sep的使用很是巧妙
2.输出,结构体里的长度的考量
3.然后cmp部分需要if,不能够直接return
还有“----”可以用来调试