POJ 1002 (二)

2014-11-24 02:32:56 · 作者: · 浏览: 4
;
dfs(phone,m+1,p->next[i]);
}
}
return ;
}
int main()
{
int n,i,j;
int number;
char phone[9];
char ch[80];
scanf("%d",&n);
findsolve=false;
size=1;
newtree(1);
for(i=1; i<=n; i++)
{
scanf("%s",ch);
number=dispose(ch);
addnum(number);
}
dfs(phone,0,&node[1]);
if(!findsolve)
printf("No duplicates.\n");
return 0;
}

第二种方法,参考别人的代码~~,map容器实现。。简单一点


[cpp]
#include
#include
#include
#include
#include

using namespace std;

int num[] =
{
2, 2, 2,
3, 3, 3,
4, 4, 4,
5, 5, 5,
6, 6, 6,
7, 0, 7, 7,
8, 8, 8,
9, 9, 9
};

map s;
char buf[128];

int main()
{
int t;
scanf("%d", &t);
bool flag = false;
for(int i = 0; i < t; i++)
{
scanf("%s", &buf);
int c = 0;
for(int j = 0; buf[j]; j++)
{
if(isdigit(buf[j]))
c = c * 10 + buf[j] - '0';
else if(isalpha(buf[j]))
c = c * 10 + num[ buf[j] - 'A' ];
}
s[c]++;
}
for(map::iterator it = s.begin(); it != s.end(); it++)
if(it->second > 1)
{
flag = true;
printf("%03d-%04d %d\n", it->first / 10000, it->first % 10000, it->second);
}
if(!flag)
puts("No duplicates.");
return 0;
}

#include
#include
#include
#include
#include

using namespace std;

int num[] =
{
2, 2, 2,
3, 3, 3,
4, 4, 4,
5, 5, 5,
6, 6, 6,
7, 0, 7, 7,
8, 8, 8,
9, 9, 9
};

map s;
char buf[128];

int main()
{
int t;
scanf("%d", &t);
bool flag = false;
for(int i = 0; i < t; i++)
{
scanf("%s", &buf);
int c = 0;
for(int j = 0; buf[j]; j++)
{
if(isdigit(buf[j]))
c = c * 10 + buf[j] - '0';
else if(isalpha(buf[j]))
c = c * 10 + num[ buf[j] - 'A' ];
}
s[c]++;
}
for(map::iterator it = s.begin(); it != s.end(); it++)
if(it->second > 1)
{
flag = true;
printf("%03d-%04d %d\n", it->first / 10000, it->first % 10000, it->second);
}
if(!flag)
puts("No duplicates.");
return 0;
}