| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
郁闷,谁能帮小弟看一下程序(c++).....不胜感激#include <iostream.h>
void swap(int &a, int &b)
{
int temp;
temp =a;
a = b;
b = temp;
}
int part(int *a, int low, int high)
{
int pivpos=low;
int pivot = a[low];
for (int i=low+1; i<=high; i++)
{
if (a[i]<pivot && ++pivpos != i)
swap(a[pivpos], a[i]);
}
swap(a[low], a[pivpos]);
return pivpos;
}
void sort(int *a, int left, int right)
{
if (left < right)
{
int pivpos = part(a, left, right);
sort(a, left, pivpos-1);
sort(a, pivpos+1, right);
}
}
void main()
{
int num;
int *a;
cin>>num;
a = new int[num];
int j=0; //the totle numbers of string and digital
int j1=0; //the position of string
char p[40];
for (int i=0; i<num; i++)
{
a[i] = 0;
j = 0;
j1 =0;
cin>>p;
while (1)
{
if (p[j1]>=48&&p[j1]<=57) { a[i] = (p[j1]-48) + a[i]*10; j++; if (j==7) break;}
if (p[j1]>=65&&p[j1]<=80) { a[i] = (2+(p[j1]-65)/3) + a[i]*10; j++;if (j==7) break;}
if (p[j1]>=82&&p[j1]<=89) { a[i] = (2+(p[j1]-66)/3) + a[i]*10; j++;if (j==7) break;}
if (p[j1]>=97&&p[j1]<=112) { a[i] = (2+(p[j1]-97)/3) + a[i]*10; j++;if (j==7) break;}
if (p[j1]>=114&&p[j1]<=121) { a[i] = (2+(p[j1]-98)/3) + a[i]*10; j++;if (j==7) break;}
j1++;
}
}
sort(a, 0, num-1); //快速排序
for (i=0; i<num; i++)
{
cout<<a[i]<<endl;
}
int count=1;
int sig = 0;
i = 0;
while (i<num)
{
for (int j=i+1; a[i]==a[j]; j++)
{
count++;
}
if (count>1) {cout<<a[i]/10000<<"-"<<a[i]-a[i]/10000*10000<<" "<<count<<endl; sig = 1; count=1;}
i = j-1;
i++;
}
if (sig == 0) cout<<"No duplicates."<<endl;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator