📄 fenerzhizhi.cpp
字号:
#include<iostream.h>
#include<stdlib.h>
#include<math.h>
class fenerzhizhi
{public:
int A[20][20];
int a,b;
void arrangement(int k,int n);
void intputnumber();
void outshuju();
};
void fenerzhizhi::intputnumber()
{
int i,flag;
flag=1;
cout<<"请输入运动员的开始号a:"<<endl;
cout<<"a:";
cin>>a;
cout<<"请输入运动员的人数b:b应该为2的n次幂"<<endl;//应添加判断输入是否满足条件
cout<<"b:";
cin>>b;
while((b!=2)&&(flag==1))
{
//if(((b%2)!=0)||((4%b)!=0)||((8%b)!=0)||((16%b)!=0))
if((8%b)!=0)
{ cout<<"b的值不对,请重新输入!"<<endl;
cout<<"b:";
cin>>b;}
else flag=0;
}
cout<<"运动员的号码为:";
for(i=a;i<a+b;i++)
cout<<i<<" ";
cout<<endl;
}
void fenerzhizhi::outshuju()
{ int i,j;
cout<<"比赛时间表为:"<<endl;
for (i=a;i<a+b;i++)
{for(j=0;j<b;j++)
cout<<" "<<A[i][j];
cout<<endl;
}
}
void fenerzhizhi::arrangement(int k,int n)
{//k是运动员的开始号,n是运动员人数。
int i ,j ;
if (n==2) {
A[k][0]=k; A[k+1][0]=k+1;
A[k][1]=k+1; A[k+1][1]=k;
}
else
{
arrangement(k, n/2);
arrangement(k+n/2, n/2);
for(i=k;i<k+n/2;i++)
for (j=n/2;j<n;j++)
A[i][j]=A[i+n/2][j-n/2];// from A2 to A4
for(i=k+n/2;i<k+n;i++)
for (j=n/2;j<n;j++)
A[i][j]=A[i-n/2][j-n/2];// from A1 to A3
}
}
void main()
{//int a,b;
//int a,b;
fenerzhizhi myshuju;
/* cout<<" "<<"分而治之"<<endl;
cout<<" "<<"请输入运动员的开始号a:"<<endl;
cin>>a;
cout<<" "<<"请输入运动员的人数b:"<<endl;
cin>>b;
cout<<" "<<"运动员的开始号为:"<<a<<" "<<"运动员的人数为:"<<b<<endl; */
myshuju.intputnumber();
myshuju.arrangement(myshuju.a,myshuju.b);
myshuju.outshuju();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -