似乎不是那么简单
平面上有n个点,两点之间或相邻或不相邻,现在将每个点涂上颜色,要求相邻的点不能用相同的颜色,问最少用几种颜色。
输入:先是一个整数n,代表有n个点
然后输入它们的相邻不相邻情况。例如:
4
A:BC //代表A和BC相邻,下面类似
B:ACD
C:ABD
D:BC
最后输出:
3 colors needed.
我的程序为什么不对?55555555
#include <iostream.h>
#include <string.h>
void change(char str[],int num[],int n)
{
cin >> str;
int i,len;
len=strlen(str);
for(i=2;i<len;i++)
if(num[str[i]-'A']==num[n]&&str[i]>str[n])
num[str[i]-'A']++;
}
int max(int num[],int n)
{
int m=0,i=0;
for(i=0;i<n;i++)
if(num[i]>m)
m=num[i];
return m;
}
void main()
{
int i,n;
char str[30];
int num[30];
cin >> n;
for(i=0;i<n;i++)
num[i]=1;
for(i=0;i<n;i++)
change(str,num,i);
if(max(num,n)==1)
cout << max(num,n) << " color needed.\n";
else cout << max(num,n) << " colors needed.\n";
}