| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1993 人关注过本帖
标题:OJ1002我哪里错了?
取消只看楼主 加入收藏
fben
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-23
收藏
 问题点数:0 回复次数:0 
OJ1002我哪里错了?
#include <cstdlib>
#include <iostream>
#include <list>
#define MAX 8
using namespace std;
/*
A, B, and C map to 2
D, E, and F map to 3
G, H, and I map to 4
J, K, and L map to 5
M, N, and O map to 6
P, R, and S map to 7
T, U, and V map to 8
W, X, and Y map to 9
*/
char chartoint(char c)
{
switch( c ) {
case 'A':
case 'B':
case 'C':
return '2';
break;
case 'D':
case 'E':
case 'F':
return '3';
break;
case 'H':
case 'I':
case 'G':
return '4';
break;
case 'J':
case 'K':
case 'L':
return '5';
break;
case 'M':
case 'N':
case 'O':
return '6';
break;
case 'P':
case 'R':
case 'S':
return '7';
break;
case 'T':
case 'U':
case 'V':
return '8';
break;
case 'W':
case 'X':
case 'Y':
return '9';
break;
default:
return 0;
break;
}


}

//if( isalnum(in) ) printf("isalnum %c\n",in); // 0 a z A Z
//if( isalpha(in) ) printf("isalpha %c\n",in); // a z A Z
//if( iscntrl(in) ) printf("iscntrl %c\n",in); //
//if( isdigit(in) ) printf("isdigit %c\n",in); // 0
//if( isgraph(in) ) printf("isgraph %c\n",in); // - 0 a z A Z
//if( islower(in) ) printf("islower %c\n",in); // a z
//if( isspace(in) ) printf("isspace %c\n",in); //
//if( ispunct(in) ) continue; // -
//if( isupper(in) ) printf("isupper %c\n",in); // A Z
//if( isxdigit(in) ) printf("isxdigit %c\n",in); // 0 a A
void aff(int * tab,int * tac ,int t){
int i=0;
int b,c;
while(i<t) {
if((c=tac[i])>1) {
b=tab[i];
printf("%d-",b/10000);
int d=b%10000;
if(d<1000) { printf("0");if(d<100){ printf("0"); if(d<10) printf("0"); }}
printf("%d %d\n",d,c);
}
i++;
}
}

int insort(int *b,int *c,int k, int j){
int i,l,p,q;
i=0;
while(b[i]<k&&b[i++]!=0);
if(i>j) return(-1);
q=1;
while(i<=j){
l=b[i];
b[i]=k;
k=l;
p=c[i];
c[i]=q;
q=p;
i++;
}
return(0);
}

int getnum(){
char s[MAX+1];
int i=0;
char in;
while(i<MAX){
scanf("%c",&in);
if(in=='\n') break;
if( isdigit(in) ) {(s[i++])=in; continue; }
int t;
if( isupper(in) ) {if(t=chartoint(in)){ (s[i++])=t; continue;} else{ return(0);}}
if(in=='-') continue;
return(0);
}
if(i!=MAX-1){
if(i>MAX-1){ while(1){ scanf("%c",&in); if(in=='\n') return(0);} }
else{return(0);}
}


return(atoi(s));
}

int main(int argc, char *argv[])
{
char num[MAX+1];
char sin[20];
int i,j,k;
int a;
int NODOUBLE=true;
int ERROR=false;

scanf("%s",&sin);
if(!(a=atoi(sin))) exit(1);

int * b = NULL;
b=(int*) malloc(a * sizeof(int));
int * c = NULL;
c=(int*) malloc(a * sizeof(int));
for(i=0;i<a;i++) b[i]=c[i]=0;

char ifg; scanf("%c",&ifg);
int coun=a;
while(!ERROR && coun-- )
{
if(k=getnum())
for(j=0;j<a;j++){
if(b[j]==0){
b[j]=k;
c[j]=1;
insort(b,c,k,j);
break;
}
if(b[j]==k){
c[j]++;
NODOUBLE=false;
break;
}
}else{ERROR=true;}

}

if(ERROR){printf("\nSample Input : \n12\n4873279\nITS-EASY\n888-4567\n3-10-10-10\n888-GLOP\nTUT-GLOP\n967-11-11\n310-GINO\nF101010\n888-1200\n-4-8-7-3-2-7-9-\n487-3279\n");}
else
if(NODOUBLE){printf("No duplicates.\n");}
else{aff(b,c,a);}
free(b); free(c);
system("PAUSE");
return EXIT_SUCCESS;
}

http://acm.pku.edu.cn/JudgeOnline/problem?id=1002

[此贴子已经被作者于2007-8-29 17:33:13编辑过]

搜索更多相关主题的帖子: map case include MAX char 
2007-08-29 17:17
快速回复:OJ1002我哪里错了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041630 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved