zoukankan      html  css  js  c++  java
  • 【例题5-2 UVA

    【链接】 我是链接,点我呀:)
    【题意】

    在这里输入题意

    【题解】

    用vector模拟就好。 resize的时候,只是把多余的清理掉。 原先的不会变的。

    【错的次数】

    在这里输入错的次数

    【反思】

    在这里输入反思

    【代码】

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 30;
    
    string s1, s2;
    int n, a, b;
    vector <int> v[N];
    
    void get_sta(int a, int &p, int &h)
    {
    	for (int i = 0; i < n; i++)
    	{
    		int len = v[i].size();
    		for (int j = 0;j < len;j++)
    			if (v[i][j] == a)
    			{
    				p = i, h = j;
    				return;
    			}
    	}
    }
    
    void clear(int p, int h)
    {
    	int lenv = v[p].size();
    	for (int j = h + 1; j < lenv; j++)
    		v[v[p][j]].push_back(v[p][j]);
    	v[p].resize(h + 1);
    }
    
    void add(int p1, int h1, int p2)
    {
    	int lenv = v[p1].size();
    	for (int j = h1; j < lenv; j++)
    		v[p2].push_back(v[p1][j]);
    	v[p1].resize(h1);
    }
    
    int main()
    {
    	//freopen("F:\rush.txt", "r", stdin);
    	scanf("%d", &n);
    	for (int i = 0; i < n; i++) v[i].push_back(i);
    	while (cin >> s1)
    	{
    		if (s1 == "quit") break;
    		cin >> a >> s2 >> b;
    		int p1, h1, p2, h2;
    		get_sta(a, p1, h1);
    		get_sta(b, p2, h2);
    		if (p1 == p2) continue;
    		if (s1 == "move") clear(p1, h1);
    		if (s2 == "onto") clear(p2, h2);
    		add(p1,h1,p2);
    	}
    	for (int i = 0; i < n; i++)
    	{
    		printf("%d:",i);
    		int len = v[i].size();
    		for (int j = 0; j < len; j++) printf(" %d", v[i][j]);
    		puts("");
    	}
    	return 0;
    }
    
  • 相关阅读:
    CSS3 @media 查询(制作响应式布局)
    seajs学习
    LABjs、RequireJS、SeaJS 区别
    jquery知识简单运用
    jquery拖拽
    选项卡简单版
    手风琴,回到顶部,无限运动
    分步运动
    多图片放大显示
    测试定时器、获取字符串的字节长度
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7655481.html
Copyright © 2011-2022 走看看