zoukankan      html  css  js  c++  java
  • Uva 10935 Throwing cards away I

    题目意思:有N张牌,标号为1~N,且牌以叠好,从上到小就是标号1~N的牌,只要牌堆数量大于等于2的时候,就采取如下操作:将最上面的牌扔掉(即离开牌堆)。刚才那张牌离开后,再将新的最上面的牌放置于牌堆最后一张。

    要求输出:依次输出被扔掉的牌,按扔掉的顺序输出。最后要输出最后留下的一张牌。

    思路:用一个队列来模拟,被扔掉的牌相当于取出后进行pop操作,把最上面的牌放置最后相同于取出后进行pop操作和push操作,直至队列的size小于等于1

    注意点:因为题目对格式的要求,所以第一张被扔掉的牌格式处理上于后面被扔掉的牌有所不同。

    /*
    	UvaOJ 10935
    	Emerald
    	Sat 2 May 2015
    */
    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <queue>
    
    using namespace std;
    
    queue <int> q;
    
    void Init( int N ) {
    	while( !q.empty() ) {
    		q.pop();
    	}
    	for( int i=1; i<N+1; i++ ) {
    		q.push( i );
    	}
    }
    
    void Throw( ) {
    	printf( "Discarded cards: %d", q.front() );
    	q.pop();
    	q.push( q.front() );
    	q.pop();
    	while( q.size() >= 2 ) {
    		printf( ", %d", q.front() );
    		q.pop();
    		q.push( q.front() );
    		q.pop();
    	}
    	printf( "
    " );
    	printf( "Remaining card: %d
    ", q.front() );
    }
    
    int main() {
    	int N;
    	while( cin >> N && N ) {
    		Init( N );
    		if( N==1 ) {
    			printf( "Discarded cards:
    " );
    			printf( "Remaining card: 1
    " );
    		} else {
    			Throw();
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    js练习 导航栏下拉子菜单
    js练习 DIV做下拉列表
    js添加事件
    HTML5音频和视频
    HTML5表单元素拓展
    document对象
    DOM
    函数
    常用的函数及递归
    JavaScript数组示例
  • 原文地址:https://www.cnblogs.com/Emerald/p/4480748.html
Copyright © 2011-2022 走看看