poj 1002之我见
2013-01-15 14:54
218 查看
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
//出现Runtime Error可能原因是分配的局部的数组空间不够,之运行中出现此类错误
//使用每加入一个都计数的方式可能会导致Time Limit Exceeded
//最好使用一次排序并且一次遍历计数的方式
//q没有映射,暂记为1
char map[]={'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','9'};
//struct N{
// int data;
// int times;
//};
int nums[100005];
int cmp(const void *n1,const void *n2){
return *(int *)n1 - *(int *)n2;
}
int main(){
int num;
scanf("%d",&num);
for(int i=0;i<num;i++){
int now=0;
char worknum[256];
scanf("%s",&worknum);
int index=0;//写入指针index4为扫描指针
for(int index4=0;index4<strlen(worknum);index4++){
if(worknum[index4]>='A'&&worknum[index4]<='Z'){
worknum[index]=map[worknum[index4]-'A'];
index++;
}
else if(worknum[index4]>='0'&&worknum[index4]<='9'){
worknum[index]=worknum[index4];
index++;
}
else
continue;
}
worknum[index]='\0';
//使用将字符创数字转化为int行的函数,一定要熟练。
now=atoi(worknum);
nums[i]=now;
//查找有没有now
//bool flag=false;
//for(int j=0;j<=index2;j++){
// if(nums[j].data==now){
// nums[j].times++;
// flag=true;
// }
//}
//if(!flag){
// index2++;
// nums[index2].data=now;
// nums[index2].times=1;
//}
}
qsort(nums,num,sizeof(int),cmp);
int dup=0;
int count=1;
for(int k=0;k<num;k++){
if(nums[k]==nums[k+1]){
count++;
}
else{
if(count!=1){
dup++;
int head=nums[k]/10000;
int tail=nums[k]%10000;
printf("%03d-%04d %d\n",head,tail,count);
count=1;
}
}
}
if(dup==0)
printf("No duplicates.\n");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
//出现Runtime Error可能原因是分配的局部的数组空间不够,之运行中出现此类错误
//使用每加入一个都计数的方式可能会导致Time Limit Exceeded
//最好使用一次排序并且一次遍历计数的方式
//q没有映射,暂记为1
char map[]={'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','9'};
//struct N{
// int data;
// int times;
//};
int nums[100005];
int cmp(const void *n1,const void *n2){
return *(int *)n1 - *(int *)n2;
}
int main(){
int num;
scanf("%d",&num);
for(int i=0;i<num;i++){
int now=0;
char worknum[256];
scanf("%s",&worknum);
int index=0;//写入指针index4为扫描指针
for(int index4=0;index4<strlen(worknum);index4++){
if(worknum[index4]>='A'&&worknum[index4]<='Z'){
worknum[index]=map[worknum[index4]-'A'];
index++;
}
else if(worknum[index4]>='0'&&worknum[index4]<='9'){
worknum[index]=worknum[index4];
index++;
}
else
continue;
}
worknum[index]='\0';
//使用将字符创数字转化为int行的函数,一定要熟练。
now=atoi(worknum);
nums[i]=now;
//查找有没有now
//bool flag=false;
//for(int j=0;j<=index2;j++){
// if(nums[j].data==now){
// nums[j].times++;
// flag=true;
// }
//}
//if(!flag){
// index2++;
// nums[index2].data=now;
// nums[index2].times=1;
//}
}
qsort(nums,num,sizeof(int),cmp);
int dup=0;
int count=1;
for(int k=0;k<num;k++){
if(nums[k]==nums[k+1]){
count++;
}
else{
if(count!=1){
dup++;
int head=nums[k]/10000;
int tail=nums[k]%10000;
printf("%03d-%04d %d\n",head,tail,count);
count=1;
}
}
}
if(dup==0)
printf("No duplicates.\n");
return 0;
}
相关文章推荐
- POJ 1002
- POJ 1002
- 一个字典树问题--电话号码转化问题(POJ 1002 487-3279)
- poj 1002
- POJ 1002 487-3279 Trie解读
- POJ 1002 487-3279
- POJ_1002 487-3279
- poj1002的java实现
- POJ 1002 487-3279
- POJ1002 487-3279
- POJ——1002 487-3279
- C++——字符串例题——487-3279(POJ1002)
- 【poj1002】487-3279
- 【POJ 1002】487-3279
- poj1002
- poj 1002
- POJ 1002 487-3279(map)
- poj 1002 487-3279
- poj 1002 487-3279
- [POJ]1002