Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

这是怎么回事呀?先前我用冒泡排序,TLE,换用递归的快速排序后总 RUNTIME ERROR,请高手指教一下,多谢

Posted by david1983aa at 2006-12-07 22:27:20 on Problem 1002
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>

int constnum[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,-1};
int compare(const void *a,const void *b)
{
    return *((int *)a)-*((int *)b);
}

int partition(long int *tel,int start,int end)
{
    int low,high;
    long int value;
    low=start;
    high=end;
    value=tel[low];
    
    while(low<high)
    {
        while(low<high && tel[high]>=value) --high;
          tel[low]=tel[high];
        while(low<high && tel[low]<=value) ++low;
          tel[high]=tel[low];
    }
    tel[low]=value;
    return low;     
}      
void quick_sort(long int *tel,int start,int end)
{
    int p;
    if(start<end)
    {
        p=partition(tel,start,end);
        quick_sort(tel,start,p-1);
        quick_sort(tel,p+1,end);
    }
}        

void conv_code(int num)
{
    int k;  
    for(k=6;k>=0;k--)
    {
        if(k!=3)
          printf("%d",num/(int)pow(10,k));
        else
        if(k==3)
          printf("-%d",num/(int)pow(10,k));
        num=num%(int)pow(10,k);
    }
}       
       
void print(long int *tel,int n)
{
    int i,j,cal,sign;
    sign=0;
    i=0;
    while(i<n)
    {
        cal=1;
        while(tel[i]==tel[i+cal])
          cal++;
        if(cal>1)
        {
            conv_code(tel[i]);
            printf(" %d",cal);
            printf("\n");
            sign=1;
        }
       
        i=i+cal;   
    }
    if(sign!=1)
      printf("No duplicates.\n");   
}       

int main()
{
    int i,j,k;
    int num;
    long int *telnum;
    char a[15];
    scanf("%d",&num);
    telnum=(long int *)malloc(num*sizeof(long int));
    for(i=0;i<num;i++)
      telnum[i]=0;
      
    for(i=0;i<num;i++)
    {
        scanf("%s",a);
        k=6;
        for(j=0;a[j]!='\0';j++)
        {
            if(a[j]>='A' && a[j]<='Z')
            {
                telnum[i]+=constnum[a[j]-'A']*(int)pow(10,k);
                k--;   
                continue;
            }
    
            if(a[j]>='0' && a[j]<='9')
            {
                telnum[i]+=(a[j]-'0')*(int)pow(10,k);
                k--;
                continue;
            }                  
        } 
     }
     //quick_sort(telnum,0,num-1);
     qsort(telnum,num,sizeof(int),compare);
     print(telnum,num);
     getch();
     return 0;      
}   

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator