横竖三连

greex 2015-02-17 03:03:05

typedef std::vector<char> VEC_OBJ_LINE;
typedef std::vector<VEC_OBJ_LINE> VEC_OBJ_ALL;
void printObj(const VEC_OBJ_ALL& allData)
{
for (VEC_OBJ_ALL::const_iterator itr1=allData.begin();itr1!=allData.end();++itr1)
{
const VEC_OBJ_LINE& line=*itr1;
for (VEC_OBJ_LINE::const_iterator itr2=line.begin();itr2!=line.end();++itr2)
{
std::cout<<*itr2;
}
std::cout<<std::endl;
}
}
string toString(const VEC_OBJ_LINE& line)
{
std::ostringstream osm;
for (VEC_OBJ_LINE::const_iterator itr2=line.begin();itr2!=line.end();++itr2)
{
osm<<*itr2;
}
return osm.str();
}
bool hasExitThreeObj(const VEC_OBJ_LINE& line,const VEC_OBJ_LINE& oldLen)
{
for(VEC_OBJ_LINE::const_iterator itr1=line.begin();itr1!=line.end();++itr1)
{
unsigned int uNum=0;
for(VEC_OBJ_LINE::const_iterator itr2=line.begin();itr2!=line.end();++itr2)
{
if (*itr1==*itr2)
{
++uNum;
if (uNum>=3)
{
std::cout<<itr2-line.begin()<<"=="<<toString(oldLen)<<std::endl;
//return true;
}
}
else
{
uNum=0;
}
}
}
return false;
}
bool listTwoObj(const VEC_OBJ_LINE& line1,const VEC_OBJ_LINE& line2)
{
int uNum=4;
while (uNum>=0)
{
VEC_OBJ_LINE lineL(line1);
lineL.at(uNum)=line2.at(uNum);
if (hasExitThreeObj(lineL,line1))
{
return true;
}

VEC_OBJ_LINE lineR(line2);
lineR.at(uNum)=line1.at(uNum);
if (hasExitThreeObj(lineR,line2))
{
return true;
}
--uNum;
}

return false;
}
void test(const std::string& strValue)
{
unsigned int uV=0;
VEC_OBJ_ALL allData;
for (int i=0;i<5;++i)
{
VEC_OBJ_LINE line;
for (int j=0;j<5;++j)
{
char ch=strValue.at(uV++);
line.push_back(ch);
}
allData.push_back(line);
}

printObj(allData);
VEC_OBJ_ALL::iterator itr1=allData.begin();
VEC_OBJ_ALL::iterator itr2=itr1;++itr2;
while (itr2!=allData.end())
{
listTwoObj(*itr1,*itr2);
++itr1;
++itr2;
}

for (int i=0;i<4;++i)
{
VEC_OBJ_LINE lineL;
VEC_OBJ_LINE lineR;
for (int j=0;j<5;++j)
{
const VEC_OBJ_LINE &line=allData.at(j);
lineL.push_back(line.at(i));
lineR.push_back(line.at(i+1));
}
listTwoObj(lineL,lineR);
}
}
...全文
173 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-07-20
  • 打赏
  • 举报
回复
不明觉厉
greex 2015-07-20
  • 打赏
  • 举报
回复
Windows更新清理工具(WinSxS目录清理)v8.19 绿色版
greex 2015-02-17
  • 打赏
  • 举报
回复
http://blog.csdn.net/evankaka/article/details/38495921
greex 2015-02-17
  • 打赏
  • 举报
回复
消除游戏,在一个方阵中布满各种糖果,任意交换两个糖果,如果交换后出现横向或者竖向有连续三个相同的情况,则可以消除糖果并得分。

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧