[進階程設] 隨機座位

Posted on Thu, Oct 7, 2021 進階程設課程 C++

正常座位

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int r,c,mr=5,mc=5,k,lim=22;
    int rc=r*c;
    int a[rc];
    srand(time(NULL));
    for(int i=0;i<rc;i++){
        a[i]=i+1;
    }
    for(int i=0;i<rc-lim;i++){
        a[rc-i-1]=0;
    }
    for(int i=0;i<r;i++){
        for(int j=0;j<c;j++){
            cout<<a[i*r+j]<<" ";
        }
        cout<<endl;
    }
    for(int i=0;i<rc;i++) swap(a[i],a[rand()%rc]);
    for(int i=0;i<r;i++){
        for(int j=0;j<c;j++){
            cout<<a[i*r+j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

梅花座

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int r=5,c=5,k=0,lim=9;
    cin>>r>>c>>lim;
    int rc=r*c/2+r*c%2;
    int a[rc];
    srand(time(NULL));
    
    for(int i=0;i<rc;i++) a[i]=i+1;
    for(int i=0;i<rc-lim;i++) a[rc-i-1]=0;
    for(int i=0;i<rc;i++) swap(a[i],a[rand()%rc]);
    
    for(int i=0;i<r;i++){
        for(int j=0;j<c;j++){
            if(i%2!=j%2) cout<<"  ";
            else{
                cout<<a[k]<<" ";
                k++;
            }
        }
        cout<<endl;
    }
 
    return 0;
}