char型別的字串比較,和vector的初次見面
阿新 • • 發佈:2019-02-17
程式碼如下:
//在程式碼的後面有//的地方是本人應該注意的地方
#include<cstdio>
#include<vector>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn = 30;
int n;
vector<int> pile[maxn];
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 pile_onto(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++)
{
printf("%d:",i);
for(int j=0;j<pile[i].size();j++)
{
printf(" %d",pile[i][j]);
}
printf("\n");
}
}
int main()
{
int a,b;
scanf("%d",&n);
char s1[10],s2[10]; //1
for(int i=0 ;i<n;i++)
{
pile[i].push_back(i);
}
while(~scanf("%s",s1)) //2
{
if(s1[0]=='q'){ //3
print(); //4
break;
}
scanf("%d %s %d",&a,s2,&b);
int pa,pb,ha,hb;
find_block(a,pa,ha);
find_block(b,pb,hb);
if(pa==pb) continue;
if(strcmp(s2,"onto")==0)
//5,字串比較用strcmp,並且用==,在<cstring>標頭檔案裡面
clear_above(pb,hb);
if(strcmp(s1,"move")==0) //5與上問題相同
clear_above(pa,ha);
pile_onto(pa,ha,pb);
}
return 0;
}
今天一個上午,男神就教了好幾套標頭檔案,怕是有的時間吃了。