| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3133 人关注过本帖
标题:[讨论]悬赏千金求一算法二--联赛问题
只看楼主 加入收藏
jiansilang
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2004-5-9
收藏
得分:0 

#include <iostream.h>
void main()
{ int i,j,N,n=0;
cout<<"请输入队伍数:N= ";
cin>>N;

for(i=1;i<N;i++)
for(j=i+1;j<=N;j++)
{
cout<<"T"<<i<<"--";
cout<<"T"<<j<<" ";
n++;
if(n%(N/2)==0)
cout<<endl;
}
}
看看是这样吗?不过我觉的是不是我理解错了题了?

哈哈,好象不对,想错了

———————————————————

你只想对了早晚要打的全部比赛
本题难就难在如何合理安排场次
类似问题有学校合理制订课程表
2006-06-07 13:17
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
从1到n排成一个环,
奇数的情况, 第一轮从连续的两个数 比如1和2 开始,依次选n和3,n-1和4,n-2和5...... 最后剩下一个,然后第二轮从2和3开始...... 一直到第n轮是从n和1开始。
偶数的话去先掉一个,就是奇数的情况了,然后把每轮轮空的那个和去掉的组成一组。
画图划拉一下就比较清楚了,证明方面我没有,我只是想奇多边形对于原点是非对称的吧,不用担心有重复。

2006-06-07 16:28
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
以下是引用woodhead在2006-6-7 16:28:00的发言:
从1到n排成一个环,
奇数的情况, 第一轮从连续的两个数 比如1和2 开始,依次选n和3,n-1和4,n-2和5...... 最后剩下一个,然后第二轮从2和3开始...... 一直到第n轮是从n和1开始。
偶数的话去先掉一个,就是奇数的情况了,然后把每轮轮空的那个和去掉的组成一组。
画图划拉一下就比较清楚了,证明方面我没有,我只是想奇多边形对于原点是非对称的吧,不用担心有重复。

我很早用这方法试了!有些数还是不可以圆满


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-06-07 16:31
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
哪些?

2006-06-07 17:39
game0319
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-6-4
收藏
得分:0 
#include <stdio.h>
#define M 13
#define N ((int)((M+1)/2)*2) //令大于等于M的第一个偶数个队伍参加比赛,
int ged[N][N]={0}; //记录队伍之间的比赛情况,用1标志两队未比赛,
int g[N]; //记录本轮是否参加过比赛,
int [N/2][2]; //记录本轮的比赛场次
main()
{
int a,i,j,t1,t2; // a为比赛的轮数,t1记录一场比赛中的编号小的队伍,t2为编号大的队伍
int only; // 若比赛的队伍数为奇数时,记录单独的队伍编号
int again=0,z,no; // again 显示是否需要重新选对,z为本轮比赛的场次,no是否选出队伍进行比赛
for(i=0;i<N;i++) for(j=i+1;j<N;j++) ged[i][j]=1; //初始化比赛记录,
for(a=1;a<N;a++)
{
for(i=0;i<N/2+1;i++) T[i][0]=-1,T[i][1]=-1; // 初始化本轮比赛场次
z=0;
for(i=0;i<N;i++) g[i]=0; // 初始化本轮参加过比赛的队伍
g[a]=1,g[0]=1; // 确定队伍0和第a支队伍比赛
T[z][0]=0,T[z][1]=a; //记录比赛情况
for(t1=1;t1<N;t1++)
{
no=1;
if (g[t1]==1) continue; // 如果t1已参加过本轮比赛,判断下一个
for(t2=t1+1;t2<N;t2++) // 选择t2队伍
{
if (again) t2=T[z][1]+1,z--,again=0;
if (g[t2]==0 & ged[t1][t2]==1) //当t2本轮未参赛,且未与t1比赛,记录比赛
{
no=0;
z++;
T[z][0]=t1;
T[z][1]=t2;
g[t1]=1,g[t2]=1; //记录t1与t2参赛
ged[t1][t2]=0; //记录t1与t2比赛过了
break;
}
}
if (no)
{
again=1;
t1=T[z][0]-1;
g[T[z][0]]=0,g[T[z][1]]=0;
ged[T[z][0]][T[z][1]]=1;
}
}
only=-1;
for(j=0;j<=z;j++)
{
if(T[j][1]==M) {only=T[j][0];continue;}
printf("T%.2d vs T%.2d ",T[j][0],T[j][1]);
}
if (only!=-1) printf("T%.2d ",only);
printf("\n");
}
printf("\n");
}
2006-06-08 17:42
herotobe
Rank: 1
等 级:新手上路
威 望:1
帖 子:48
专家分:0
注 册:2006-5-3
收藏
得分:0 

[此贴子已经被作者于2006-6-11 9:57:35编辑过]


After all,tomorrow is another day!!!!
2006-06-10 19:29
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
回复:(herotobe)感觉下面这个算法应该比较完全了,...
从T00到T26共27个队。浮躁害死人。

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-10 20:50
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
感谢大家的讨论,以及–★–,woodhead,game0319的程序。金币已发放。希望有机会继续讨论。

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



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

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