| ||||||||||
| 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 | |||||||||
求指点,提交后显示Wrong Answer!!!#include"stdio.h"
#define LENGTH 50
void adjust_heap(int *input, int root, int size)
{
int swap=0;
int left=2*root+1;
int right=2*root+2;
int largest=root;
while(root<size)
{
if((left<size) || (right<size))
{
if((left<size) && (input[largest]<input[left]))
{
largest=left;
}
if((right<size) && (input[largest]<input[right]))
{
largest=right;
}
}
if(largest!=root)
{
swap=input[largest];
input[largest]=input[root];
input[root]=swap;
left=2*largest+1;
right=2*largest+2;
root=largest;
}
else
{
break;
}
}
}
void build_maxheap(int *input,int size)
{
int i=0;
int lastend_root=size/2-1;
for(i=lastend_root;i>=0;i--)
{
adjust_heap(input,i,size);
}
}
void heap_sort(int *input,int size)
{
int swap=0;
build_maxheap(input,size);
while(size>1)
{
swap=input[0];
input[0]=input[size-1];
input[size-1]=swap;
size--;
adjust_heap(input,0,size);
}
}
void main()
{
int n=0;
int temp=0;
int count=0;
char printed=0;
int i=0,j=0;
char input[LENGTH];
int mid_output[100000]={0};
int map_table[100];
map_table['0']=0;
map_table['1']=1;
map_table['2']=map_table['A']=map_table['B']=map_table['C']=2;
map_table['3']=map_table['D']=map_table['E']=map_table['F']=3;
map_table['4']=map_table['G']=map_table['H']=map_table['I']=4;
map_table['5']=map_table['J']=map_table['K']=map_table['L']=5;
map_table['6']=map_table['M']=map_table['N']=map_table['O']=6;
map_table['7']=map_table['P']=map_table['R']=map_table['S']=7;
map_table['8']=map_table['T']=map_table['U']=map_table['V']=8;
map_table['9']=map_table['W']=map_table['X']=map_table['Y']=9;
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%s",input);
j=0;
while(input[j])
{
if(((input[j]>='0') && (input[j]<='9')) || ((input[j]>='A') && (input[j]<='Z')))
{
mid_output[i]=10*mid_output[i]+map_table[input[j]];
j++;
}
else
{
j++;
}
}
}
heap_sort(mid_output,n);
for(i=0;i<n;i++)
{
printf("%d ",mid_output[i]);
}
for(i=0;i<n;)
{
temp=mid_output[i];
while(temp==mid_output[i])
{
count++;
i++;
}
if(count>=2)
{
printf("%d-",temp/10000);
printf("%d %d\n",temp%10000,count);
printed=1;
count=0;
}
else
{
count=0;
}
}
if(0==printed)
{
printf("No duplicates\n");
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator