我们先看题:
我们仔细观察就会发现一下规律:
设一个数,
设两个数,且
1.在的范围内,有
2.在的范围内,有
3.在的范围内,有.
以上三条我都验证过了,正确.
所以代码就出来了:
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int power2(int w)
{
return 1<<w;
}
int mp[1025][1025];
int n,m,k,h;
int main()
{
cin >> m;
n=power2(m);
h=1;
mp[0][0]=1;
for(int k=1;k<=m;k++)
{
for(int i=0;i<h;i++)
{
for(int j=0;j<h;j++)
{
mp[i][j+h]=mp[i][j]+h;
}
}
for(int i=0;i<h;i++)
{
for(int j=0;j<h;j++)
{
mp[i+h][j]=mp[i][j+h];
mp[i+h][j+h]=mp[i][j];
}
}
h*=2;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout << mp[i][j] << ' ';
}
cout << endl;
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)