041day(熄灯问题的程序和构造函数的学习)
来源:互联网 发布:更改计算机端口号 编辑:程序博客网 时间:2024/06/14 10:45
172210704111-陈国佳总结《2017年11月20日》【连续041天】
标题:熄灯问题的程序和构造函数的学习;
内容:A.观看MOOC(三)2.2;
B.a.昨天的程序经过排查,发现一个++i写成了+i;此解法重点运用了位运算来优化程序;
int GetBit(char c,int i){
return(c>>i)& 1;
}
void SetBit(char& c,int i,int v){
if(v) c |=(1<<i);
else c&= ~(1<<i);
}
void Flip(char&c,int i){
c ^=(1<<i);
}
void OutputResult(int t,char result[])
{
cout<<"PUZZLE #"<<t<<endl;
for(int i=0;i<5;++i){
for(int j=0;j<6;++j){
cout<<GetBit(result[i],j);
if(j<5)
cout<<" ";
}cout<<endl;
}
}
int main()
{
char oriLights[5];
char lights[5];
char result[5];
char switchs;
int T;
cin>>T;
for(int t=1; t<=T;++t){
memset(oriLights,0,sizeof(oriLights));
for(int i=0;i<5;i++){
for(int j=0;j<6;++j){
int s;
cin>>s;
SetBit(oriLights[i],j,s);
}
}
for(int n=0;n<64;++n){
memcpy(lights,oriLights,sizeof(oriLights));
switchs =n;
for (int i=0;i<5;++i){
result[i]=switchs;
for(int j=0;j<6;++j){
if(GetBit(switchs,j)){
if(j>0) Flip(lights[i],j-1);
Flip(lights[i],j);
if(j<5)Flip(lights[i],j+1);
}
}
if(i<4)
lights[i+1]^=switchs;
switchs=lights[i];
}
if(lights[4]==0){
OutputResult(t,result);
break;
}
}
}
return 0;
}
(b).构造函数(Constructor)
成员函数的一种,可以有参数,不能有返回值(void也不行)
作用是对对象进行初始化;
如果定义类时没写构造函数,则编译器自动生成一个默认的无参数构造函数;此函数不足任何操作;
一个类可以有多个构造函数;
class Complex{private: double real,imag; public: Complex(double r,double i=0);};
Complex::Complex(double r,double i){real = r; imag=i;}
Complex c1; //error,缺参数
Complex*pc=new Complexl //error,同上;
Complex c1(2); //OK Complex c1(2,4),c2(3,5);
多个构造函数,参数个数或 类型不同(类似于重载函数);
构造函数最好是public;
class Test{public: Test(int n){ } //(1) Test(int n,int m){ } //(2) Test() { } //(3)};
Test array1[3]={1,Test(1,2)}; //3个元素,分别用(1)(2)(3)初始化;
Test array2[3]={Test(2,3),Test(1,2),1}; //3个元素分别用(2)(2)(1)初始化;
Test *pArray[3]={new Test(4),new Test(1,2)}; //2个元素分别用(1)(2)初始化;
明日计划:学习复制构造函数;
- 041day(熄灯问题的程序和构造函数的学习)
- 040day(枚举例题(熄灯问题)的学习)
- 048day(类型转换构造函数和析构函数的学习)
- 047day(复制构造函数和递归例题(波兰表达式)的学习)
- 049day(构造和析构函数的调用时机,递归例题(四则运算表达式求值)的学习)
- 熄灯之后的学习——再读《MySQL必知必会》(10)|| 使用数据处理函数
- 060day(派生类的构造函数和public继承)
- 开灯,熄灯 小游戏 的 程序解
- 015day(函数的学习)
- 遍历搜索空间的例子:熄灯问题
- 024day(void指针和内存操作函数及函数指针的学习)
- 关于this和构造函数的学习
- 构造函数的问题
- 构造函数的问题
- 包含析构函数和构造函数的程序.cpp
- C++的构造函数 和 析构函数的问题
- C++:派生类的默认构造函数和拷贝构造函数调用基类构造函数的机制(含程序验证)
- (1)为什么构造函数的名字用类名?(2)构造函数返回值问题;(3)析构函数和构造函数定义为虚函数;
- 利用hibernate 的离线加载实现三层架构
- NOIP2017 Day2t3 队列
- 饿了么推荐系统:从0到1
- 10.8合并顺序表
- 人工智能从入门到精通(2)
- 041day(熄灯问题的程序和构造函数的学习)
- PyCharm Run & Debug 程序安全执行步骤
- construct2第二次制作游戏
- ssm整合ActiveMQ
- JZOJ 5474. 【NOIP2017提高组正式赛】时间复杂度
- 一文搞懂HMM
- 获取微信用户发来的链接
- 文章标题
- 排序算法-选择排序