zoukankan      html  css  js  c++  java
  • 算法练习(四)

    一、解密QQ

    题目

      新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问QQ号,小哈当然不会直接告诉小哼啦,原因嘛你懂的。所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数再放到这串数的末尾,再将第5个数删除……直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是小哈的QQ啦。现在你来帮帮小哼吧。小哈给小哼加密过的一串数是“6 3 1 7 5 8 9 2 4”。

    输出要求

    输出小哈的真实QQ。

    代码

    #include<stdio.h>
    
    int main() {
    	int q[101] = {6,3,1,7,5,8,9,2,4},head,tail;
    
    	head = 0;
    	tail = 9; // q[tail]为0 
    
    	while (head < tail) {
    		printf("%d ",q[head]);
    		head++;  // 开头递进
    	
    		q[tail] = q[head];  // 将新的开头赋值给结尾
    		tail++; // 结尾递进
    		head++; // 开头递进
    	}
    
    	return 0;
    }
    

    解题思路

    利用队列的思想,在开头和结尾上不断递进,可以很好的模拟题目的要求。


    二、Train Problem I

    题目

    传送门

    代码

    #include<stdio.h>
    int n;
    char start[100];
    char end[100];
    char centre[100]; // 中转 
    
    int main() {
    	int k,l,i,j;
    	
    	while (scanf("%d %s %s",&n,start,end) != EOF) {
    		int book[n]; // 记录列车进出站顺序,0为出战,1为进站 
    		k = 1; // 记录列车在中转台的数量,起始值必为 1 
    		l = 1;  // 列车行动计步器
    		i = 0,j = 0; // 记录列车在起点的位置为 i,终点的位置为 j 
    		book[0] = 1; // 第一辆车必定进站 
    		centre[1] = start[0];
    		
    		while (i < n && j < n) {
    			if (centre[k] == end[j]) { // 如果此时中转台的列车序号等于对应终点的列车序号,列车将从中转至终点 
    				++j;
    				--k;
    				book[l++] = 0; // 记录列车行动 
    			} else { // 否则列车从起点进入中转站 
    				centre[++k] = start[++i];
    				book[l++] = 1; // 记录列车行动 
    			}
    		}
    		
    		if (k == 0) {
    			printf("Yes.
    ");
    			for (i = 0; i < l; i++) {
    				if (book[i] == 0) {
    					printf("out
    ");
    				} else {
    					printf("in
    ");
    				}
    			}
    		} else {
    			printf("No.
    ");
    		}
    		printf("FINISH
    ");
    	}
    	return 0;
    }
    

    解题思路

    利用三个数组,对列车的行动进行模拟。start、end、centre分别代表起点、终点与中转站。掌握列车运行规则则可顺利完成本题。本题的变量较多,需牢记各变量作用。

    附:一朵小花

  • 相关阅读:
    451. Sort Characters By Frequency
    424. Longest Repeating Character Replacement
    68. Text Justification
    44. Wildcard Matching
    160. Intersection of Two Linked Lists
    24. Swap Nodes in Pairs
    93. 递归实现组合型枚举
    98. 分形之城
    97. 约数之和
    96. 奇怪的汉诺塔
  • 原文地址:https://www.cnblogs.com/mxwbq/p/7191757.html
Copyright © 2011-2022 走看看