分治法在安排循环赛中的应用

    xiaoxiao2021-03-25  146

    《算法分析与设计及案例教程》P61

    #include <iostream> using namespace std; int a[1024][1024]; void merger(int n){ int m=n/2; for(int i=0;i<m;i++){ for(int j=0;j<m;j++){ a[i][j+m]=a[i][j]+m;//左上算出右上 a[i+m][j]=a[i][j+m];//右上算出左下 a[i+m][j+m]=a[i][j];//左上算出右下 } } } void arrangement(int n){ if(n==1){ a[0][0]=1; return; } arrangement(n/2); merger(n); } int main(){ int n; cout<<"请输入有多少人比赛"<<endl; cin>>n; arrangement(n); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-7152.html

    最新回复(0)