| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3133 人关注过本帖
标题:[讨论]悬赏千金求一算法二--联赛问题
只看楼主 加入收藏
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
他这个不对,N支队伍,单循环应该有(N-1)*N/2场比赛

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-06-05 00:19
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
每轮那就对了,哈哈~眼睛漏东西了

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-06-05 00:20
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
四支队就是
ab cd
ac bd
ad bc
每轮(int)N/2场就是如果是偶数支队就每轮每支队一场。否则有一个队轮空。
总共N-1轮比赛。
和假A一样。

[此贴子已经被作者于2006-6-5 0:51:09编辑过]


http://myajax95./
2006-06-05 00:50
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
输出一个赛程表?还是可能的所有个?

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-06-05 00:52
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
随便一个可行的就行。不用穷举,如果不需要的话。

http://myajax95./
2006-06-05 01:03
game0319
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-6-4
收藏
得分:0 

我编了个程序,可以完成你说的功能!
代码如下:
#include <stdlib.h>
#define N 10
main()
{
int team[N];
int i,t1,t2;
for(i=0;i<N;i++)
team[i]=1; \\初始化队伍状态
srand(time(NULL));
for(i=0;i<N/2;i++)
{
t1=t2=-1;
while (t1==-1)
{
t1=(rand()+N)%N; \\选择队伍比赛
if (team[t1]==0) \\判断队伍是否比赛
t1=-1; \\重新挑选队伍
else
team[t1]=0; \\标记t1比赛
}
while (t2==-1)
{
t2=(rand()+N)%N;
if (team[t2]==0) t2=-1 ;
else
team[t2]=0;
}
printf("%c Vs %c\n",t1+65,t2+65);\\显示比赛队伍
}
printf("\n") ;
}

2006-06-05 11:18
game0319
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-6-4
收藏
得分:0 
这是我的机器上运行的结果,符合要求吗?
他模拟了队伍之间的抽签比赛,每次的结果都应该是不同的,这个字显示了比赛队伍是偶数的时候的情况,可在加一句就可显示任意情况了。
A vs G
B vs I
E vs H
D vs F
C vs J
2006-06-05 11:27
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用game0319在2006-6-5 11:27:00的发言:
这是我的机器上运行的结果,符合要求吗?
他模拟了队伍之间的抽签比赛,每次的结果都应该是不同的,这个字显示了比赛队伍是偶数的时候的情况,可在加一句就可显示任意情况了。
A vs G
B vs I
E vs H
D vs F
C vs J

你的结果只是一轮呀,要算所有轮,即N-1轮,对于你的程序,就是9轮。每轮中每支球队的对手不能重复。


http://myajax95./
2006-06-05 12:12
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
//以下代码存在最大的缺陷是
//不能让比赛在最短天数结束
#include<stdio.h>
#define N 8 //队伍数,11~16效果不错,N=10表现不好
main( )
{
static char b[N][N][2];
int i,j,k,n,flag;
for(k=0; ;k++)
{
flag=0;
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(b[i][j][0]==0)
if(b[i][j][1]==k)
{ b[i][j][0]=1;
if(!flag){flag=1;
printf("\n第%d天的赛事安排:\n",k+1);}
printf("%d:%d ",i+1,j+1);
for(n=0;n<N;n++)b[i][n][1]=k+1;
for(n=0;n<N;n++)b[j][n][1]=k+1;
for(n=0;n<N;n++)b[n][i][1]=k+1;
for(n=0;n<N;n++)b[n][j][1]=k+1;
}
if(flag==0)break;
}
printf("\n\n");
}

[此贴子已经被作者于2006-6-5 13:02:03编辑过]


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-05 12:54
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用–★–在2006-6-5 12:54:00的发言:
//以下代码存在最大的缺陷是
//不能让比赛在最短天数结束
#include<stdio.h>
#define N 8 //队伍数,12效果尚可
main( )
{
static char b[N][N][2];
int i,j,k,n,flag;
for(k=0; ;k++)
{
flag=0;
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(b[i][j][0]==0)
if(b[i][j][1]==k)
{ b[i][j][0]=1;
if(!flag){flag=1;
printf("\n第%d天的赛事安排:\n",k+1);}
printf("%d:%d ",i+1,j+1);
for(n=0;n<N;n++)b[i][n][1]=k+1;
for(n=0;n<N;n++)b[j][n][1]=k+1;
for(n=0;n<N;n++)b[n][i][1]=k+1;
for(n=0;n<N;n++)b[n][j][1]=k+1;
}
if(flag==0)break;
}
printf("\n\n");
}

N=10的怎么改?


http://myajax95./
2006-06-05 12:58
快速回复:[讨论]悬赏千金求一算法二--联赛问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040583 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved