排球队员站位问题
来源:互联网 发布:大数据 银行 编辑:程序博客网 时间:2024/04/28 01:53
本题适合来理解回溯的思想:
代码给出,不做过多解释:
#include <iostream>using namespace std;int main(){ int positionCan[6][6];/*运动员对于某个位置能不能站,0代表能,1代表能*/ int position[6];/*运动员的最终站位*/ int judge[6];//判断某个位置是否已经有人,1代表有人,0代表无人 for (int i=0;i<6;i++)//运动员编号 { for (int j = 0;j<6;j++)//位置编号 { if (i == j) { positionCan[i][j] = 0; } else { positionCan[i][j] = 1; } } } for (int i=0;i<6;i++) { judge[i] = 0;//初始为0 } for (int i=0;i<6;i++) { position[i] = -1;//刚开始,所有运动员都没有位置站 } positionCan[0][4] = 0;//1号队员不在后排 positionCan[0][5] = 0;//1号队员不在后排 positionCan[1][4] = 0;//2号队员不是二传手 positionCan[2][1] = 0;//3号队员不是二传手 positionCan[2][4] = 0;//3号队员不是二传手 positionCan[4][2] = 0;//5号队员不是副攻手 positionCan[4][5] = 0;//5号队员不是副攻手 positionCan[5][2] = 0;//6号队员不是副攻手 positionCan[5][0] = 0;//6号队员不能站后排 positionCan[5][4] = 0;//6号队员不能站后排 int i=0,; int j=0; while (i<6) { j = 0; while (j<6) { if (i==3)//第四位运动员和第三位运动员不能在同一排 { if (position[2] == 3)//如果3号队员站到了4号位(即唯一的前排可能),则4号队员应站后排 { positionCan[3][1] = 0; positionCan[3][2] = 0; positionCan[3][3] = 0; } else { positionCan[3][0] = 0; positionCan[3][4] = 0; positionCan[3][5] = 0; } } else//如果回溯的话,需要对第四位队员进行恢复,否则会发生错误,因为它的站位限制不固定 { for (int k=0;k<6;k++) { if (k!=3) { positionCan[3][k] = 1; } } } //可以站J号位,且此位无人 if (positionCan[i][j] == 1 && judge[j] == 0) { judge[j] = 1;//i号运动员站j号位 position[i] = j;//i号运动员站j号位 i++; break; } else { j++; } while (j==6)//如果i号运动员没有找到可站的位置,则回溯 { i--; j = position[i] + 1; judge[position[i]] = 0;//没有位置站 position[i] = -1;//前一名运动员重新回到没有位置站的情况 } } } for (int k = 0;k<6;k++) { cout<<"第"<<k+1<<"号队员的站位是:"<<position[k]+1<<endl; } return 0;}
运行结果:
- 排球队员站位问题
- 排球队员站位问题+回溯思想
- 排球队员站位问题(回溯法)
- 从google doc转移-排球运动员站位
- 排球战队问题
- 排球
- 队员匹配问题
- foj1695 队员选拔问题
- 站位
- 站位
- 站位
- 站位
- 站位
- 站位
- 队列解决队员分配问题
- 打排球
- iOS emoji过滤(实际为站位4字符的问题)
- 给大一ACM队员的四个问题答复
- 完全卸载Oracle
- 一种感觉,失而复得
- 不可思议的死循环(一)
- Navicat for Oracle Cannot create oci environment
- What is the Maximum Value for max_connections on Linux?
- 排球队员站位问题
- 13.反射、类加载
- OpenCL编码流程
- JavaMail学习笔记(二)、JavaMail API简介和配置开发环境
- 今天正式开博了~~
- javascript函数解析机制
- 【杂牌互联网产品观察员】想做技术,从观察开始,从坚持开始,从写技术博客开始!
- PHP MD5文件校验 判断文件是否相同
- dede首页调用商品价格