矩阵元素转换

#include<iostream>
using namespace std;
void change(int *f,int a)
{
	int *x,*max,*mix;
	int *y,m=1,b,x1;
	int *str[10];
	max=f;
	for(x=f+1;x<f+a*a-1;x++)
	{
		if(*x>*max) max=x;
	}
	m=*(f+(a*a-1)/2);
	*(f+(a*a-1)/2)=*max;
	*max=m;
	m=1;
	for(m=1;m<=4;m++)
	{
		if(m==1) mix=f;
		else mix=f+1;
		for(y=f;y<=f+a*a-1;y++)
		{
		 if(m==2&&y==f) y++;
		 else if(m==3&&(y==f||y==f+a-1)) y++;
		 else if(m==4&&(y==f||y==f+a-1||y==f+a*a-a)) y++;
           if(*mix>*y) mix=y;
		}
		if(m==1) 	{
			x1=*f;*f=*mix;
			*mix=x1;
		}
		else if(m==2){
			x1=*(f+a-1);*(f+a-1)=*mix;
			*mix=x1;
		}
		else if(m==3){
			x1=*(f+a*a-a);*(f+a*a-a)=*mix;
			*mix=x1;
		}
		else {
            x1=*(f+a*a-1);*(f+a*a-1)=*mix;
			*mix=x1;
		}
	}
}
int main()
{
    void change(int *,int );
    int **a,*p,i,j;
    int n;
    cin>>n;
    p=new int[n*n];
    a=new int*[n];
    for(i=0; i<n; i++)
        a[i]=p+n*i;
    for (i=0; i<n; i++)
        for (j=0; j<n; j++)
            cin>>a[i][j];
    change(p,n);
    for (i=0; i<n; i++)
    {
        for (j=0; j<n; j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
    }
    delete []p;
    delete []a;
    return 0;
}

原文地址:https://www.cnblogs.com/oversea201405/p/3766962.html