任务描述
“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”假如给你一个社交网络图,请你对每个节点计算符合“六度空间”理论的结点占结点总数的百分比。
六度分隔(Six Degrees of Separation)理论
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注- 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7488236
- 除此之外, 这篇博客: 纸牌游戏(C语言实现)中的 星期天小哼和小哈约在一起玩桌游,他们正在玩一个非常古怪的扑克游戏——“小猫钓鱼”。游戏的规则是这样的:将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两人交替出牌。出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾。当任意一人 手中的牌全部出完时,游戏结束,对手获胜。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
**
#include <stdio.h> #include <stdlib.h> struct queue{ int head; int tail; int data[1000]; }; struct stack{ int top; int data[10]; }; int main() { int i,t; struct queue q1,q2; struct stack s; int book[10]; q1.head=1;q1.tail=1; q2.head=1;q2.tail=1; s.top=0; for(i=1;i<=9;i++) book[i]=0; for(i=1;i<=6;i++){ scanf("%d",&q1.data[q1.tail]); q1.tail++; } for(i=1;i<=6;i++){ scanf("%d",&q2.data[q2.tail]); q2.tail++; } while(q1.head<q1.tail&&q2.head<q2.tail) { t=q1.data[q1.head]; if(book[t]==0){ q1.head++;//q1出牌,即出队列,头指针+1 s.top++;//桌面上的牌为栈,仅有头指针操作 s.data[s.top]=t; book[t]=1; } else{ q1.head++; q1.data[q1.tail]=t; q1.tail++; while(s.data[s.top]!=t) { book[s.data[s.top]]=0; q1.data[q1.tail]=s.data[s.top]; q1.tail++; s.top--; } } t=q2.data[q2.head]; if(book[t]==0) { q2.head++; s.top++; s.data[s.top]=t; book[t]=1; } else { q2.head++; q2.data[q2.tail]=t; q2.tail++; while(s.data[s.top]!=t) { q2.data[q2.tail]=s.data[s.top]; book[s.data[s.top]]=0; q2.tail++; s.top--; } } } if(q2.head==q2.tail) { printf("q1 win\n"); for(i=q1.head;i<q1.tail;i++)//tail始终指向结尾的下一个位置 printf("%d ",q1.data[i]); } else { printf("q2 win\n"); for(i=q2.head;i<q2.tail;i++) printf("%d ",q2.data[i]); } return 0; }
解决评论 打赏 举报无用 4