| ||||||||||
| 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 | |||||||||
各位帮忙看一下 为什么TLE啊 谢谢各位帮忙看一下 谢谢啊 难道用链表就会超时么```
#include <iostream>
using namespace std;
struct NODE
{
int digit[7]; /* 储存七位数字 */
long int number; /* 排序用 */
long int counter; /* 出现次数 */
struct NODE *next;
};
typedef struct NODE node;
node *creatend() /* 新建节点 */
{
node *p;
p=(node *)malloc(sizeof(node));
p->counter=1;
p->next=NULL;
p->number=0;
return p;
}
void mapping(char input[7],node *output) /* 键码映射 */
{
int i;
for (i=0;i<7;i++)
switch(input[i])
{
case 'J':case 'K':case 'L':output->digit[i]=5;break;
case 'G':case 'H':case 'I':output->digit[i]=4;break;
case 'M':case 'N':case 'O':output->digit[i]=6;break;
case 'D':case 'E':case 'F':output->digit[i]=3;break;
case 'P':case 'R':case 'S':output->digit[i]=7;break;
case 'A':case 'B':case 'C':output->digit[i]=2;break;
case 'T':case 'U':case 'V':output->digit[i]=8;break;
case 'W':case 'X':case 'Y':output->digit[i]=9;break;
default:output->digit[i]=input[i]-48;
}
output->number=output->digit[6]+output->digit[5]*10+output->digit[4]*100+output->digit[3]*1000+output->digit[2]*10000+output->digit[1]*100000+output->digit[0]*1000000;
}
void insert(node *numlist, node *input) /* 插入节点 */
{
node *listp1,*listp2;
if (input->number==0)
{
numlist->counter++;
free(input);
return;
}
if (!numlist->next) /* 判断是不是空列表 */
{
numlist->next=input;
return;
}
listp1=numlist;
listp2=numlist->next;
while (input->number>listp2->number && listp2->next) /* 排序 */
{
listp1=listp2;
listp2=listp2->next;
}
if (input->number>listp2->number)
{
listp2->next=input;
return;
}
if (input->number<listp2->number)
{
listp1->next=input;
input->next=listp2;
return;
} /* 数字不同则按排序插入 */
listp2->counter++; /* 数字相同则计数器加一 */
free(input);
}
void getinput(node *numlist) /* 输入循环,依照输入值对表进行处理 */
{
long int counter=0,i;
int j;
char input[7],chtemp=0;
node *newp;
scanf("%ld",&counter);
getchar(); /* 输入值的个数 */
for (i=0;i<counter;i++)
{
newp=creatend();
j=0;
while(j<8) /* 总共七位数 */
{
scanf("%c",input+j);
if (input[j]!='-') j++; /* 过滤横杠 */
}
mapping(input,newp); /* 得到输入的数字,一个数 */
insert(numlist,newp); /* 把输入插入到表中 */
}
}
void formout(node *numlist) /* 格式输出 */
{
bool Duplicate=0; /* 有没有重复值? */
node *listp=numlist;
int i;
do
{
if (listp->counter>1)
{
Duplicate=1;
for (i=0;i<3;i++)
cout << listp->digit[i];
cout << "-";
for (i=3;i<7;i++)
cout << listp->digit[i];
cout << " " << listp->counter << endl;
}
listp=listp->next;
}
while(listp);
if (!Duplicate)
cout << "No duplicates." << endl;
}
int main()
{
node *numlist;
numlist=creatend();
numlist->counter=0;
getinput(numlist);
formout(numlist);
return(0);
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator