各位猛男早上好.题目是这样的:排序打印出类似这样的图形
1 3 6
2 5 8
4 7 9
我的算法是这样的,不过错误好多,但不知怎么改.请猛男给个完整的,正确的代码,再帮我点评点评.代码如下:
#include <iostream>
using namespace std;
void mm(int n,int aa[n]);
main()
{
cin>>n;
int sum=0 ;
int aa[n];
for(m=1;m<=n;m++)
{
sum=sum+n;
aa[m-1]=sum;
}; mm(n,aa[n]);
return 0;
};
void mm(int n,int aa[n])
{
int bb[n];
for(k=0;k<=n-1;k++)
{
if (k=n-1)
{
bb[n-1]=aa[n-1]+n-1;
cout<< aa[n-1]+n-1<<endl;
}
bb[k]=aa[k+1]-1;
cout<<aa[k+1]-1;
}
if (n-1==1)
break;
return mm(n--,bb[n]);
};
1 3 6
2 5 8
4 7 9
我的算法是这样的,不过错误好多,但不知怎么改.请猛男给个完整的,正确的代码,再帮我点评点评.代码如下:
#include <iostream>
using namespace std;
void mm(int n,int aa[n]);
main()
{
cin>>n;
int sum=0 ;
int aa[n];
for(m=1;m<=n;m++)
{
sum=sum+n;
aa[m-1]=sum;
}; mm(n,aa[n]);
return 0;
};
void mm(int n,int aa[n])
{
int bb[n];
for(k=0;k<=n-1;k++)
{
if (k=n-1)
{
bb[n-1]=aa[n-1]+n-1;
cout<< aa[n-1]+n-1<<endl;
}
bb[k]=aa[k+1]-1;
cout<<aa[k+1]-1;
}
if (n-1==1)
break;
return mm(n--,bb[n]);
};
//#include "stdafx.h"#include <iostream.h>const int N_MAX = 50;void MakeSquareArray(int *arr, int nn)
{
int i=1;
int m=0,n=0; while (m<nn) // 左上半段
{
for (n=0; m>=0; n++,m--,i++)
{
*(arr+m*N_MAX+n) = i;
}
m = n;
}
int ii = nn*nn;
while (m>0) //右下半段
{
for (n=nn-1; m<nn; n--,m++,ii--)
{
*(arr+m*N_MAX+n) = ii;
}
m = n;
}
}int main(int argc, char* argv[])
{
int n = -1;
cin>>n; if (n>0 && n<N_MAX)
{
int arr[N_MAX][N_MAX] = {0}; MakeSquareArray(&arr[0][0],n); printf("square:\n");
for (int i=0; i<n;i++)
{
for (int j=0; j<n; j++)
{
printf("%d\t",arr[i][j]);
}
printf("\n");
}
}
else
{
printf("\n1~%d\t!\n",N_MAX);
} return 0;
}