我住包子山

this->blog.MoveTo("blog.baozishan.in")

zju 1004 Anagrams by Stack 我的很不规范的程序

#include <iostream>
#include <string>
using namespace std;

string stack,requare,start,newStr;
string table;
int num=0,i=0;
void check(string& start,string& stack);
void print(){
  if(newStr==requare)
  cout<<table<<endl;
}
void pushStack(char item,string& start,string& stack){
 table+='i';
 stack+=item;
 check(start,stack);

}
void popStack(string& start,string& stack){
 table+='o';
 newStr+=stack[stack.size()-1];
 stack.erase(stack.size()-1);
 check(start,stack);
}
void delPush(){
  table.erase(table.size()-1);
  stack.erase(stack.size()-1);

}
void delPop(){
  stack+=newStr[newStr.size()-1];
  table.erase(table.size()-1);
  newStr.erase(newStr.size()-1);
}

void check(string& start,string& stack){
 if (num==start.size()*2) {
  print(); 
  return;
 }
 
  
    if((newStr.size()+stack.size())!=start.size()){
    num++;
    pushStack(start[i++],start,stack);
    delPush();
    num--;
    i--;
    }
    if(stack.empty()&&i<start.size()) return;
    num++;
    popStack(start,stack);
    delPop();
    num--;
 
 
}


int main(){


 cin>>start>>requare;

 check(start,stack);
 return 0;
}

 

很不规范的地柜,还有好多个清理状态的函数。。。
什么时候才能改进阿!!!!!!!!

posted on 2006-09-04 11:39 Gohan 阅读(717) 评论(2)  编辑 收藏 引用 所属分类: C++

Feedback

# re: zju 1004 Anagrams by Stack 我的很不规范的程序 2007-07-03 16:22 niny

// 1004_Anagrams_By_Stack.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stack>
#include <vector>
#include <iostream>
#include <string>
using namespace std;

vector<char> src,drt;

void dfs(vector<char>::iterator sp,vector<char>::iterator dp,vector<char> op,stack<char> s)
{
if(dp==drt.end()){
vector<char>::iterator p;
for(p=op.begin();p!=op.end();p++)
cout<<*p<<' ';
cout<<endl;
return;
}

if(sp!=src.end()){
s.push(*sp);
op.push_back('i');
dfs(sp+1,dp,op,s);
op.pop_back();
s.pop();
}

if(!s.empty()&&s.top()==(*dp)){
s.pop();
op.push_back('o');
dfs(sp,dp+1,op,s);
op.pop_back();
s.push(*dp);
}
}


int _tmain(int argc, _TCHAR* argv[])
{
stack<char> s;
vector<char> op;
string st;
bool sord=true;
while(cin>>st){
if(sord){
for(int i=0;i!=st.size();i++)
src.push_back(st[i]);
}
else{
for(int i=0;i!=st.size();i++)
drt.push_back(st[i]);
}
sord=!sord;
if(sord){
cout<<"["<<endl;
dfs(src.begin(),drt.begin(),op,s);
cout<<"]"<<endl;
op.clear();
while(!s.empty())
s.pop();
src.clear();
drt.clear();
}
}
return 0;
}

  回复  更多评论   

# re: zju 1004 Anagrams by Stack 我的很不规范的程序 2007-07-09 22:59 Gohan

dfs写的很美观啊,多谢回复:)  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理