The Blocks Problem



  1. 题目分析:
    本题考点,vector容器

难点:
总结不同的操作方法的共同点
英语阅读,理解题意 moves the pile of blocks consisting of block a, and any blocks that are stacked above block a是说a及a以上的积木

  1. 编程中遇到的问题
    如何遇到quit即停止
    一开始考虑 while(cin>>s1>>a>>s2>>b&&s1!="quit"),发现如果这样,在输入一个quit后是不能停止的,因为要在输入a,s2,b后才会判断s1

在参考了其他人的方案后,最终代码如下

#include<iostream>
#include<vector>
using namespace std;
vector<int> pile[30];
int n;//n组
void find_block(int a,int & p,int & h)
{
    for( p=0;p<n;p++)
    for( h=0;h<pile[p].size();h++)
    {
        if(pile[p][h]==a)
        return;
    }
}
void clear_above(int p,int h)
{
    for(int i=h+1;i<pile[p].size();i++)
    {
        int b=pile[p][i];
        pile[b].push_back(b);
    }
    pile[p].resize(h+1);
}
void move(int p,int h,int p2)
{
    for(int i=h;i<pile[p].size();i++)
    {
        pile[p2].push_back(pile[p][i]);
    }
    pile[p].resize(h);
}
void print()
{
    for(int i=0;i<n;i++)
    {
        cout<<i<<":";
        for(int j=0;j<pile[i].size();j++)
        {
             cout<<" "<<pile[i][j]; 
        } 
         cout<<endl;
    }   
}
int main()
{
    cin>>n;
    for(int i=0;i<n;i++)
    pile[i].push_back(i);//给每堆赋初值 
    int a,b,pa,ha,pb,hb;
    string s1,s2;
    while(cin>>s1)
    {   if(s1=="quit")
        break;
        cin>>a>>s2>>b;
        find_block(a,pa,ha);
        find_block(b,pb,hb);
        if(pa==pb)continue;
        if(s1=="move")
        clear_above( pa,ha);
        if(s2=="onto")
        clear_above( pb,hb);
        move(pa,ha,pb); 
    }
    print();
    return 0; 
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 以题中的10块木块为例,即有10个位置,一开始从0到9依次放在10个位置上,然后机器人执行输入的指令,move a...
    不会积阅读 2,767评论 0 1
  • 午后的风 吹过你的困乏 转身将一张薄被 轻轻的为你盖上 就像小时候你经常为我做的那样 坐在你旁边的躺椅上 闭上眼睛...
    佳_38fc阅读 1,252评论 0 3
  • 没有老师教,靠自己悟,确实是很难的。今天一上场,就感觉不对,情绪随之就上来了,就是老想着是别人的失误,而不能将...
    蔡叶_7c50阅读 937评论 2 0
  • 我们听过很多人的故事,看过很多人的一生,也曾经做过别人的开导师,却依旧过不好自己的一生。 没有特定的一生,没有特定...
    小镇人阅读 3,604评论 4 7
  • 关于幸福 它是一种感受,它由你自己说了算,与别人无关。 关于爱 它是一种互动,你觉得你爱他,如果他感受不到,甚至感...
    努力成为可爱的自己阅读 1,333评论 0 0

友情链接更多精彩内容