这个问题的解决办法类似于1个发贴水王的问题,可以同时删除四个不相同的ID,直到找不到四个不相同的为止,余下的三个即为三个水王,通守维护三个结构体完成
struct Person
{
IDType ID;
int count;
}
通过遍历一遍即可得到最终结果,消除四个不同的ID实现为,比较每个一个ID,和当前的三个结构体比较,若ID和某个相等且其count>0,那么其count++,若三个ID中某个count为0,置这个ID为查询的ID,count++,若和三个均不相等,表示 三个ID的count均>0,刚三个ID的count--;循环完成。代码如下:
Person person[3];
foreach(IDType id in IDs)
{
for(int i=0;i<3;i++)
{
if(person[i].count==0)
{
person[i].ID=id;
person[i].count++;
break;
}
if(person[i].ID==id)
{
person[i].count++;
break;
}
}
for(int i=0;i<3;i++)
person[i].count--;
}
遍历完成后结果中就是三个水王的iD