POJ1007就是一道排序题,因为我的编程能力比较菜,所以全部都采用选择法排序。原以为由于选择法排序的低效导致超时,结果没想到通过了。废话就不多说了,现在贴出C++源代码:
Code
#include <iostream>
using namespace std;
#define MAXN 50
#define MAXM 100
int main()
{
int n,m,StringNum[MAXM]={0},temp;
cin >> n >> m;
char String[MAXM][MAXN],tempString[MAXN];
for(int m1=0;m1<m;m1++)
{
for(int n1=0;n1<n;n1++)
cin >> String[m1][n1];
for(int n2=0;n2<n-1;n2++)
for(int m2=n2+1;m2<n;m2++)
if(String[m1][n2]>String[m1][m2])
StringNum[m1]++;
}
for(int m3=0;m3<m-1;m3++)
{
for(int m4=m3+1;m4<m;m4++)
{
if(StringNum[m3]>StringNum[m4])
{
for(int n3=0;n3<n;n3++)
{
tempString[n3]=String[m3][n3];
String[m3][n3]=String[m4][n3];
String[m4][n3]=tempString[n3];
}
temp=StringNum[m3];
StringNum[m3]=StringNum[m4];
StringNum[m4]=temp;
}
}
}
//cout << endl; 这个地方是我最开始的时候为了方便和网页上的结果比对添加的,所以在提交时显示Presentation Error,当时就愣住了,最后觉得可能是此处不符合要求,删了之后就AC了
for(int m7=0;m7<m;m7++)
{
for(int n7=0;n7<n;n7++)
cout << String[m7][n7];
cout << endl;
}
return 0;
}
#include <iostream>
using namespace std;
#define MAXN 50
#define MAXM 100
int main()
{
int n,m,StringNum[MAXM]={0},temp;
cin >> n >> m;
char String[MAXM][MAXN],tempString[MAXN];
for(int m1=0;m1<m;m1++)
{
for(int n1=0;n1<n;n1++)
cin >> String[m1][n1];
for(int n2=0;n2<n-1;n2++)
for(int m2=n2+1;m2<n;m2++)
if(String[m1][n2]>String[m1][m2])
StringNum[m1]++;
}
for(int m3=0;m3<m-1;m3++)
{
for(int m4=m3+1;m4<m;m4++)
{
if(StringNum[m3]>StringNum[m4])
{
for(int n3=0;n3<n;n3++)
{
tempString[n3]=String[m3][n3];
String[m3][n3]=String[m4][n3];
String[m4][n3]=tempString[n3];
}
temp=StringNum[m3];
StringNum[m3]=StringNum[m4];
StringNum[m4]=temp;
}
}
}
//cout << endl; 这个地方是我最开始的时候为了方便和网页上的结果比对添加的,所以在提交时显示Presentation Error,当时就愣住了,最后觉得可能是此处不符合要求,删了之后就AC了
for(int m7=0;m7<m;m7++)
{
for(int n7=0;n7<n;n7++)
cout << String[m7][n7];
cout << endl;
}
return 0;
}
说明:程序中的m1、m2和n1、n2等都是为了进行排序所定义的变量。
最后结果:内存264K,时间16MS。
所有评论(0)