当前位置: 首页 > news >正文

酒类销售公司的网站建设家具东莞网站建设

酒类销售公司的网站建设,家具东莞网站建设,建站网页建设,渠道招商什么是约瑟夫环问题#xff1f; 约瑟夫问题是个有名的问题#xff1a;N个人围成一圈#xff0c;从第一个开始报数#xff0c;第M个将被杀掉#xff0c;最后剩下一个#xff0c;其余人都将被杀掉。例如N6#xff0c;M5#xff0c;被杀掉的顺序是#xff1a;5#xff…什么是约瑟夫环问题 约瑟夫问题是个有名的问题N个人围成一圈从第一个开始报数第M个将被杀掉最后剩下一个其余人都将被杀掉。例如N6M5被杀掉的顺序是54623。 分析 1由于对于每个人只有死和活两种状态因此可以用布尔型数组标记每个人的状态可用true表示死false表示活。 2开始时每个人都是活的所以数组初值全部赋为false。 3模拟杀人过程直到所有人都被杀死为止。 魔术 1、4张牌对折后撕开就是8张叠放在一起就是ABCDABCD。注意ABCD四个数字是完全等价的。 2、根据名字字数把顶上的牌放到下面但怎么放都不会改变循环序列的相对位置。譬如2次最后变成CDABCDAB譬如3次最后换成DABCDABC。但无论怎么操作第4张和第8张牌都是一样的。 3、把顶上3张插到中间任意位置。这一步非常重要因为操作完之后必然出现第1张和第8张牌是一样的以名字两个字为例可以写成BxxxxxxB这里的x是其他和B不同的牌。 4、拿掉顶上的牌放到一边记为B。剩下的序列是xxxxxxB一共7张牌。 5、南方人/北方人/不确定分别拿顶上的1/2/3张牌插到中间但是不会改变剩下7张牌是xxxxxxB的结果。 6、男生拿掉1张女生拿掉2张。也就是男生剩下6张女生剩下5张。分别是xxxxxB和xxxxB。 7、把最顶上的放到最底下循环7次男生和女生分别会是xxxxBx和xxBxx。 8、最后执行约瑟夫环过程操作到最后只剩下1张。当牌数为6时男生剩下的就是第5张牌当牌数为5时女生剩下的就是第3张牌。就是第4步拿掉的那张牌 .h #ifndef WIDGET_H #define WIDGET_H#include QWidget #include vector #include brand.h #include QPushButton #include QRadioButton #include QLineEdit #include QLayout #include QStackedWidget #include QSplitter #include QButtonGroup class Step: public QWidget { public:Step(QWidget *parent 0):QWidget(parent){QVBoxLayout* vbox new QVBoxLayout(this);QHBoxLayout* hboxLabel new QHBoxLayout;hboxChoose new QHBoxLayout;QHBoxLayout* hboxBtn new QHBoxLayout;label new QLabel(this);hboxLabel-addStretch();hboxLabel-addWidget(label);hboxLabel-addStretch();hboxBtn-addStretch();vbox-addLayout(hboxLabel);vbox-addLayout(hboxChoose);vbox-addLayout(hboxBtn);}void SetText(QString text){label-setText(text);}QHBoxLayout* GetChooseLayout(){return hboxChoose;}virtual bool Check() {return true;} private:QLabel* label;QHBoxLayout* hboxChoose; };class Start: public Step { public:Start(QWidget *parent 0):Step(parent){SetText(请输入四个数字、字母或汉字);edit new QLineEdit(this);edit-setPlaceholderText(请输入四个数字、字母或汉字);GetChooseLayout()-addWidget(edit);}QString GetStr(){return edit-text();}bool Check() {return edit-text().size() 4;}private:QLineEdit* edit; };class First: public Step { public:First(QWidget *parent 0):Step(parent){SetText(4张牌对折后撕开);} };class Second: public Step { public:Second(QWidget *parent 0):Step(parent){SetText(请输入您的名字);edit new QLineEdit(this);edit-setPlaceholderText(请输入您的名字);GetChooseLayout()-addWidget(edit);}int GetNumber(){return edit-text().size();}bool Check() {return edit-text().size() 0;} private:QLineEdit* edit; };class Third: public Step { public:Third(QWidget *parent 0):Step(parent){SetText(把顶上3张插到中间任意位置);radio new QRadioButton(第一张后面,this);radio1 new QRadioButton(第二张后面,this);radio2 new QRadioButton(第三张后面,this);radio3 new QRadioButton(第四张后面,this);GetChooseLayout()-addWidget(radio);GetChooseLayout()-addWidget(radio1);GetChooseLayout()-addWidget(radio2);GetChooseLayout()-addWidget(radio3);radio-setChecked(true);}int GetChoose(){if(radio-isChecked())return 1;if(radio1-isChecked())return 2;if(radio2-isChecked())return 3;if(radio3-isChecked())return 4;return 1;} private:QRadioButton* radio;QRadioButton* radio1;QRadioButton* radio2;QRadioButton* radio3; };class Four: public Step { public:Four(QWidget *parent 0):Step(parent){SetText(拿掉顶上的牌放到一边);} };class Five: public Step { public:Five(QWidget *parent 0):Step(parent){SetText(南方人/北方人/不确定分别拿顶上的1/2/3张牌插到中间);QVBoxLayout* vbox new QVBoxLayout;QHBoxLayout* hbox new QHBoxLayout;QHBoxLayout* hbox1 new QHBoxLayout;QButtonGroup* group new QButtonGroup(this);QButtonGroup* group1 new QButtonGroup(this);radio new QRadioButton(南方人,this);radio1 new QRadioButton(北方人,this);radio2 new QRadioButton(不确定,this);radio3 new QRadioButton(第一张后面,this);radio4 new QRadioButton(第二张后面,this);radio5 new QRadioButton(第三张后面,this);hbox-addWidget(radio);hbox-addWidget(radio1);hbox-addWidget(radio2);hbox1-addWidget(radio3);hbox1-addWidget(radio4);hbox1-addWidget(radio5);group-addButton(radio);group-addButton(radio1);group-addButton(radio2);group1-addButton(radio3);group1-addButton(radio4);group1-addButton(radio5);vbox-addLayout(hbox);vbox-addLayout(hbox1);GetChooseLayout()-addLayout(vbox);radio2-setChecked(true);radio3-setChecked(true);}int GetChoose(){if(radio-isChecked())return 1;else if(radio1-isChecked())return 2;else if(radio2-isChecked())return 3;return 1;}int GetChoose1(){if(radio3-isChecked())return 1;else if(radio4-isChecked())return 2;else if(radio5-isChecked())return 3;return 1;} private:QRadioButton* radio;QRadioButton* radio1;QRadioButton* radio2;QRadioButton* radio3;QRadioButton* radio4;QRadioButton* radio5; };class Six: public Step { public:Six(QWidget *parent 0):Step(parent){SetText(男生拿掉1张女生拿掉2张);radio new QRadioButton(男生,this);radio1 new QRadioButton(女生,this);GetChooseLayout()-addWidget(radio);GetChooseLayout()-addWidget(radio1);radio-setChecked(true);}int GetChoose(){if(radio-isChecked())return 1;if(radio1-isChecked())return 2;return 1;} private:QRadioButton* radio;QRadioButton* radio1; };class Seven: public Step { public:Seven(QWidget *parent 0):Step(parent){SetText(把最顶上的放到最底下,循环7次);} };class Last: public Step { public:Last(QWidget *parent 0):Step(parent){SetText(好运留下来);flag 1;}void Init(){SetText(好运留下来);flag 1;}void ChangeText(){switch(flag){case 0:flag 1;SetText(好运留下来);break;case 1:flag 0;SetText(烦恼都丢掉);break;default:break;}}int GetFlag(){return flag;}private:int flag; };class Widget : public QSplitter {Q_OBJECTpublic:Widget(QWidget *parent 0);~Widget(); private:void StartGetData();void FirstStep();void SecondStep();void ThridStep();void FourStep();void FiveStep();void SixStep();void SevenStep();void LastStep();void UpdateData(); protected slots:void OnClicked(bool); private:std::vectorBrand* m_vecBrand;QString m_firstCard;QLabel* label;QPushButton* btn;QStackedWidget* m_stackedWidget;bool bOver; };#endif // WIDGET_H .cpp #pragma execution_character_set(utf-8) #include widget.h #include QDebugWidget::Widget(QWidget *parent): QSplitter(parent) {setOrientation(Qt::Vertical);label new QLabel(qweqwe,this);QWidget* widget new QWidget(this);m_stackedWidget new QStackedWidget(this);addWidget(label);addWidget(widget);setStretchFactor(1,2);m_stackedWidget-addWidget(new Start);m_stackedWidget-addWidget(new First);m_stackedWidget-addWidget(new Second);m_stackedWidget-addWidget(new Third);m_stackedWidget-addWidget(new Four);m_stackedWidget-addWidget(new Five);m_stackedWidget-addWidget(new Six);m_stackedWidget-addWidget(new Seven);m_stackedWidget-addWidget(new Last);QHBoxLayout* hbox new QHBoxLayout;QVBoxLayout* vbox new QVBoxLayout;btn new QPushButton(下一步,this);hbox-addStretch();hbox-addWidget(btn);vbox-addWidget(m_stackedWidget);vbox-addLayout(hbox);widget-setLayout(vbox);connect(btn, SIGNAL(clicked(bool)), this, SLOT(OnClicked(bool)));bOver false; }Widget::~Widget() {}void Widget::StartGetData() {Start* start (Start*)m_stackedWidget-widget(0);QString str start-GetStr();for(int i0; istr.length(); i){Brand* brand new Brand(QString(str[i]));m_vecBrand.push_back(brand);} }void Widget::FirstStep() {Start* start (Start*)m_stackedWidget-widget(0);QString str start-GetStr();for(int i0; istr.length(); i){Brand* brand new Brand(QString(str[i]));m_vecBrand.push_back(brand);} }void Widget::SecondStep() {Second* second (Second*)m_stackedWidget-widget(2);int number second-GetNumber();for(int i0; inumber; i){Brand* brand m_vecBrand[0];m_vecBrand.erase(m_vecBrand.begin());m_vecBrand.push_back(brand);} }void Widget::ThridStep() {Third* third (Third*)m_stackedWidget-widget(3);int number third-GetChoose();Brand* brand m_vecBrand[0];Brand* brand1 m_vecBrand[1];Brand* brand2 m_vecBrand[2];m_vecBrand.erase(m_vecBrand.begin());m_vecBrand.erase(m_vecBrand.begin());m_vecBrand.erase(m_vecBrand.begin());std::vectorBrand* vecBrand;for(int i0; im_vecBrand.size(); i){vecBrand.push_back(m_vecBrand[i]);if(number i 1){vecBrand.push_back(brand);vecBrand.push_back(brand1);vecBrand.push_back(brand2);}}m_vecBrand vecBrand; }void Widget::FourStep() {m_firstCard m_vecBrand[0]-GetStr();setWindowTitle(当前选择牌为 m_firstCard);m_vecBrand.erase(m_vecBrand.begin()); }void Widget::FiveStep() {Five* five (Five*)m_stackedWidget-widget(5);int number five-GetChoose();int number1 five-GetChoose1();std::vectorBrand* vecBrand;switch (number) {case 1:vecBrand.push_back(m_vecBrand[0]);m_vecBrand.erase(m_vecBrand.begin());break;case 2:vecBrand.push_back(m_vecBrand[0]);vecBrand.push_back(m_vecBrand[1]);m_vecBrand.erase(m_vecBrand.begin());m_vecBrand.erase(m_vecBrand.begin());break;case 3:vecBrand.push_back(m_vecBrand[0]);vecBrand.push_back(m_vecBrand[1]);vecBrand.push_back(m_vecBrand[2]);m_vecBrand.erase(m_vecBrand.begin());m_vecBrand.erase(m_vecBrand.begin());m_vecBrand.erase(m_vecBrand.begin());break;default:break;}std::vectorBrand* vecBrand1;for(int i0; im_vecBrand.size(); i){vecBrand1.push_back(m_vecBrand[i]);if(number1 i 1){vecBrand1.insert(vecBrand1.end(), vecBrand.begin(), vecBrand.end());}}m_vecBrand vecBrand1; }void Widget::SixStep() {Six* six (Six*)m_stackedWidget-widget(5);int number six-GetChoose();switch (number) {case 1:m_vecBrand.erase(m_vecBrand.begin());break;case 2:m_vecBrand.erase(m_vecBrand.begin());m_vecBrand.erase(m_vecBrand.begin());break;default:break;} }void Widget::SevenStep() {for(int i0; i7; i){Brand* brand m_vecBrand[0];m_vecBrand.erase(m_vecBrand.begin());m_vecBrand.push_back(brand);} }void Widget::LastStep() {Last* last (Last*)m_stackedWidget-widget(8);int flag last-GetFlag();switch (flag) {case 0:m_vecBrand.erase(m_vecBrand.begin());break;case 1:Brand* brand m_vecBrand[0];m_vecBrand.erase(m_vecBrand.begin());m_vecBrand.push_back(brand);break;}last-ChangeText(); }void Widget::UpdateData() {QString str;for(int i0; im_vecBrand.size(); i){str m_vecBrand[i]-GetStr();}label-setText(str); }void Widget::OnClicked(bool) {if(bOver){setWindowTitle(magic);Last* last (Last*)m_stackedWidget-widget(8);last-Init();bOver false;btn-setText(下一步);m_stackedWidget-setCurrentIndex(0);return;}Step* step (Step*)m_stackedWidget-currentWidget();if(!step-Check())return;if(m_vecBrand.size() 1){m_vecBrand.clear();Last* last (Last*)m_stackedWidget-widget(8);last-SetText(之前的牌为 m_firstCard 对上否);bOver true;btn-setText(重新开始);return;}switch (m_stackedWidget-currentIndex()) {case 0://4张牌StartGetData();break;case 1://对折撕开FirstStep();break;case 2://根据名字字数把顶上的牌放到下面SecondStep();break;case 3://把顶上3张插到中间任意位置ThridStep();break;case 4://拿掉顶上的牌放到一边FourStep();break;case 5://南方人/北方人/不确定分别拿顶上的1/2/3张牌插到中间FiveStep();break;case 6://男生拿掉1张女生拿掉2张SixStep();break;case 7://把最顶上的放到最底下,循环7次SevenStep();break;case 8://好运留下来 烦恼都丢掉LastStep();break;default:break;}UpdateData();if(m_stackedWidget-currentIndex() 1 m_stackedWidget-count())m_stackedWidget-setCurrentIndex(m_stackedWidget-currentIndex() 1); }
http://www.hkea.cn/news/14449867/

相关文章:

  • 企业网站源码打包怎样做省钱购物网站
  • 做衣服接订单的网站怎么看网站开发的技术
  • 网站排名快速提升工具阜南网站建设公司
  • 金华网站建设公司网页传奇游戏如何0血打不死
  • 创意福州网站建设百度极简网址
  • 车陂手机网站开发公司要做个网站吗
  • 扬州企业网站建设网站是用什么程序做的
  • 石家庄市制作网站公司品牌设计师
  • 向公司申请建设网站申请书效果图怎么做出来的
  • 科技公司网站设计服务只做男士衬衫的网站
  • 网站可能存在什么问题吗网站空间域名是什么
  • 免费网站推广工具有哪些做教育培训的网站
  • 长沙做网站团队薪水最高的十大专业
  • 网站建设的技术团队武陵天下网站建设
  • 网站 主办单位性质 个人拼多多怎么申请开店
  • thinkphp开发企业网站线下推广引流渠道
  • 郑州做网站公司有哪些品牌展示型网站有哪些
  • 专业网站建设微信官网开发大兴建设网站公司
  • 网站建设公司的服务特点安徽省工程建设协会网站
  • 做家装的网站有什么不同厦门高端网站案例
  • 网站建设费用一年西地那非副作用太强了
  • 可以举报一个做网络网站发大财吗中国做的比较好的网站有哪些
  • wordpress图文混排深圳搜狗seo
  • 广州 环保 凡人网站建设国外网站服务器租用
  • 苏州企业建站系统模板青岛网站建设优化
  • 石狮服装城商家微网站建设商城网站建设与维护方案
  • 外贸网站外包wordpress免费创建博客
  • 国产前端框架 做网站凡科代理建站登录
  • 推荐系统网站开发河源盛世网站建设
  • 网站建设三要素wordpress如何设置会员中心