**利用二位数组把翻转硬币的过程初始化
输入n,易知翻转n次就可以得到答案
把二维数组的下三角全部变成1,翻转为反面,对应n次翻转硬币
再将奇数行的0和1全部对换
输出二维数组,即可得到正确答案**
如n=4时:
1000
1100
1110
1111
再奇数行0,1互换:
0111
1100
0001
1111
#include<stdio.h>
int main()
{
int n, a[100][100];
void reverse(int a[100][100], int n);
void print(int a[100][100], int n);
scanf("%d", &n);
printf("%d\n", n);
for (int i = 0; i < n; i++)//初始化
for(int j=0;j<n;j++)
a[i][j] = 0;
reverse(a,n);//翻转硬币
print(a, n);//输出
return 0;
}
void reverse(int a[100][100], int n)
{
int i;
for (i = 0; i < n; i++)//每次翻转一个硬币
for (int j = 0; j <= i; j++)
a[i][j] = 1;
for (int j = 0; j < n; j+=2)//将奇数行0,1互换
{
for (int k = 0; k < n; k++)
{
if (a[j][k] == 0)
a[j][k] = 1;
else
a[j][k] = 0;
}
}
}
void print(int a[100][100], int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
printf("%d", a[i][j]);
printf("\n");
}
}