方法:建立一个二维数组,用0-4分别代表这五个人。如(0,1)=1即表示代号为0的人可以看到代号为1的人的朋友圈,若等于0则不能看到。
graph[i][j],对于每一个i进行循环,将每偶数个为1的值重新赋值为0,这样新得到的数组就可以代表点赞结果。反向以[j]输出,即可得到答案
具体解释在代码里:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int graph[5][5]={0};
char initial[50];
int length;
int n=0;
int number[50];
int output=0;
scanf("%s,",initial);
scanf("%d",&output);
length=strlen(initial);
//将字符串型转化为整形存在number数组里//
for(int i=0;i<length;i++)
{
if(initial[i]==',')
{
i++;
}
if(i!=length)
{
number[n]=initial[i]-'0';
n++;
}
}
// 每间隔1个做[i],后一个做[j],建立可见列表//
for(int i=0;i<n;i+=2)
{
graph[number[i]][number[i+1]]=1;
}
//建立点赞列表//
for(int i=0;i<5;i++)
{
n=0;
for(int j=0;j<5;j++)
{
if(graph[i][j]==1)
{
n++;
}
if(n%2==0)
{
graph[i][j]=0;
}
}
}
/*for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
printf("%d,",graph[i][j]);
}
printf("\n");
}*/
int check=0;
for(int i=0;i<5;i++)
{
if(graph[i][output]==1)
{
printf("%d,",i);
check++;
}
}
if(check==0)
{
printf("-1");
}
return 0;
}