题解 P1146 【硬币翻转】
Desire_mxx · · 题解
什么话不说就是干!
先说一下我原先的思路:直接用bool做,后来发现不对
//40分代码
include <bits/stdc++.h>
using namespace std;
int main()
{
bool a[110];
int n;
cin>>n;
cout<<n<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(j!=i){
if(a[j]==true)
a[j]=0;
else
a[j]=1;
}
cout<<a[j];
}
cout<<endl;
}
return 0;
}
后来我才发现,int做超级简单:
附上我的代码+解释
include <bits/stdc++.h>//万能头文件
using namespace std;
int main()//懒得解释
{
int n;
int a[150];//宁可开大点,也不开小点
cin>>n;
cout<<n<<endl;//次数永远是n次,于是直接输出n
for (int i=1;i<=n;i++) //硬币开始时是正面,正面是0,全部赋值0
a[i]=0;
for (int i=1;i<=n;i++){ //将n枚硬币依次翻过来
for (int j=1;j<=n;j++)//将其它所有枚硬币反过来
if (j!=i)
a[j]=1-a[j];//翻硬币
for (int k=1;k<=n;k++)
cout<<a[k];//输出每枚硬币的状态(正面或反面)
cout<<endl;//别忘了换行
}
return 0;//程序结束
}
说实话,超简单