⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fenerzhizhi.cpp

📁 本程序是根据分而治之的思想来解决比赛的时间表的问题
💻 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 + -