qq_46285362 2021-10-26 10:07 采纳率: 0%
浏览 17

“the block problem”问题,运行一直被中断

#运行一直被中断,有没有大佬帮我运行一下告诉我错在哪了,

img

img

#include<iostream>
#include<vector>
#include<list>
#include<cstring>
using namespace std;
void initialize(int count,vector< list<int> >&table){
    int i=0;
    for(i=0;i<count;i++){
        table.push_back( list<int>(1,i) );
    }
}

void display(vector< list<int> >&table){
    list<int>::iterator q;
    int i,j=table.size();
    for(i;i<j;i++){
      q=table[i].begin();
      cout<<i<<":";
      for(q;q!=table[i].end();q++)
        cout<<*q<<"   ";
        cout<<endl;
}
}

int lookup(int a,list<int>::iterator &q,vector< list<int> >&table) {
    int i=0,j=table.size();
    for(i;i<j;i++){
        q=table[i].begin();
        for(q;q!=table[i].end();q++)
          if(*q==a) return i;
    }
    return -1;
}

int panduan(int a,int b,vector< list<int> >&table){
    int i,j;
    list<int>::iterator q,p;
    i=lookup(a,q,table);
    j=lookup(b,p,table);
    if(i==j) return 1;
    return 0;
}

void reset(int a,vector< list<int> >&table){
    list<int>::iterator q;
    int flag;
    flag=lookup(a,q,table); 
    list<int>::iterator p=q;
    p++;
    if(flag==-1||q==table[flag].end()) return ;
    while(p!=table[flag].end()){
        table[*p].push_back(*p);
        p=table[flag].erase(p);
    }
}

void move(int a,int b,vector< list<int> >&table){
    if(a==b||panduan(a,b,table)) return ;
    int flag1,flag2;
    list<int>::iterator q,p;
    flag1=lookup(a,q,table);
    flag2=lookup(b,p,table);
    if(flag1==-1||q==table[flag1].end()) return ;
    if(flag2==-1||p==table[flag2].end()) return ;
    table[flag2].insert(table[flag2].end(),q,table[flag1].end());
    table[flag1].erase(p,table[flag1].end());    
}
int main(){
    vector< list<int> >table;
    int count=0;
    while(cin>>count)
    {    
    initialize(count,table);
    string flag;
    while(cin>>flag){
        
        if(flag=="quit") break;
        string flag2;
        int a=0,b=0;
        cin>>a>>flag2>>b;
        if(flag=="move"&&flag2=="over"){
            reset(a,table);
            move(a,b,table);
        }
        if(flag=="move"&&flag2=="onto"){
            reset(a,table);
            reset(b,table);
            move(a,b,table);
        }
        if(flag=="pile"&&flag2=="over"){
            move(a,b,table);
        }
        if(flag=="pile"&&flag2=="onto"){
            reset(b,table);
            move(a,b,table);
        }
    }
    display(table);}
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 猫叔大鸭梨 2021-10-26 10:36
    关注

    报错截图吧。

    评论

报告相同问题?

问题事件

  • 修改了问题 10月26日
  • 创建了问题 10月26日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效