?? 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 + -