赛程安排--基于多边形思想
来源:互联网 发布:php短信轰炸机源码 编辑:程序博客网 时间:2024/04/29 00:44
大概题意:设有n=2K支球队,进行n-1天的比赛,每个球队必须跟其他球队都进行比赛,且每天只跟一个球队比赛,(还有一种情况是奇数支球队,这种情况就得n天才能比完,相信也不难,改一下代码就可以了,具体情况是每天都剩下一支不同的球队不进行比赛)
在此我用多边形法做的具体如下设有(4个球队):
1
3 2
3
第一天:(1,4)(3,2)
1
3 2
第二天:(2,4)(3,1)
1
3 2
第三天:(3,4)(1,2)
如此用多边形进行安排即可:
#include<iostream.h>
#include<malloc.h>
int i,n,j;
int a[50][50];
typedef structnode//定义链表类型
{
int data;
struct node*next,*prior;
}dlinklist;
voidcreatelist(dlinklist *&l,int n)//创建循环双链表(用尾插入法)
{
dlinklist*s,*r;
l=(dlinklist*)malloc(sizeof(dlinklist));
l->data =1;
r=l;
for(i=2;i<=n;i++)
{
s=(dlinklist*)malloc(sizeof(dlinklist));
s->data=i;
r->next=s;
s->prior=r;
r=s;
}
r->next =l;
l->prior =r;
}
voidshuchu(dlinklist *&q)//输出具体安排
{
dlinklist*r=q->prior,*p=q ;
while(p!=r)
{
for(j=0;j<n;j++)
{
if(p->data==a[j][0])
a[j][i]=r->prior->data ;
if(r->prior->data ==a[j][0])
a[j][i]=p->data;
}
p=p->next;
r=r->prior;
}
}
voidanpai(dlinklist *l)//只要用来控制P指针指向下一个位置
{
dlinklist *p=l->next ;
for(i=1;i<=n;i++)
{
shuchu(p);
p=p->next;//
}
}
voiddestroy(dlinklist *&l)//销毁链表
{
dlinklist*pre=l, *p=l->next ;
while(p!=l)
{
free(pre);
pre=p;
p=pre->next;
}
free(pre);
}
void main()
{
dlinklist *l;
cout<<"请输入比赛的球队数(奇数):"<<endl;
cin>>n;
for(i=0;i<=n;i++)
a[i][0]=i+1;
createlist(l,n);
anpai(l);
for(intk=0;k<n;k++)
{
for(j=0;j<n;j++)
cout<<a[k][j]<<" ";
cout<<endl;
}
destroy(l);
}
偶数的情况大家自己改一下代码就可以。- 赛程安排--基于多边形思想
- 循环赛赛程安排---递归思想
- 赛程安排问题
- 赛程安排问题
- 循环赛程安排
- 单循环赛程安排问题
- 循环赛程安排
- 分治法--循环赛赛程安排
- 【分治法】赛程安排问题
- 【模拟退火】【NOI2008】赛程安排
- 分治算法-选手赛程安排
- 分治算法求解赛程安排
- 第十四届男篮世锦赛赛程安排
- 【程序8】乒乓球比赛赛程安排
- 比赛赛程安排算法--分治算法
- 分治算法之赛程安排问题
- 网球循环赛赛程安排(分治策略)---附带详细代码
- 篮球循环赛:给出循环塞的赛程安排
- SQL必知必会 笔记 第二十二章 了解高级SQL特性
- MYSQL之REPLACE INTO和INSERT … ON DUPLICATE KEY UPDATE用法
- VC 判断系统是否进入睡眠模式
- Struts2 XML配置详解
- android异步http向外传值
- 赛程安排--基于多边形思想
- 免费OA系统的选择
- Oracle SQL题目及其解答(学生、课程、成绩、教师)
- Berkeley socket 套接字编程详解
- 那些年我们遗忘的Static
- iOS开发系列之常用自定义控件开发集—自定义数字键盘控件开发
- C++智能指针的简单实现
- JQuery入门(3)
- STL stack容器