社区讨论
一个传统的做法
P1146硬币翻转参与者 5已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo9h87ao
- 此快照首次捕获于
- 2023/10/28 11:22 2 年前
- 此快照最后确认于
- 2023/10/28 11:22 2 年前
**利用二位数组把翻转硬币的过程初始化
输入n,易知翻转n次就可以得到答案
把二维数组的下三角全部变成1,翻转为反面,对应n次翻转硬币
再将奇数行的0和1全部对换
输出二维数组,即可得到正确答案**
如n=4时:
1000
1100
1110
1111
再奇数行0,1互换:
0111
1100
0001
1111
C输入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");
}
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...