首页 > ACM题库 > 九度OJ > 九度-1055-数组逆置[解题代码]
2013
12-12

九度-1055-数组逆置[解题代码]

题目来源:2011年哈尔滨工业大学计算机研究生机试真题

题目描述:

输入一个字符串,长度小于等于200,然后将数组逆置输出。

输入:

测试数据有多组,每组输入一个字符串。

输出:

对于每组输入,请输出逆置后的结果。

样例输入:
hdssg
样例输出:
gssdh

cpp 代码如下:
#include <stdio.h>
#include <string.h>
char str[201];

int main() {
	while(gets(str)){
		int len = strlen(str);
		int i;
		for(i=0; i<len/2; i++){
			char temp = str[i];
			str[i] = str[len-1-i];
			str[len-1-i] = temp;
		}
		printf("%s\n",str);
	}
	return 0;
}

/**************************************************************
	Problem: 1055
	User: coder
	Language: C
	Result: Accepted
	Time:0 ms
	Memory:912 kb
****************************************************************/


  1. 在方法1里面:

    //遍历所有的边,计算入度
    for(int i=0; i<V; i++)
    {
    degree = 0;
    for (j = adj .begin(); j != adj .end(); ++j)
    {
    degree[*j]++;
    }
    }

    为什么每遍历一条链表,要首先将每个链表头的顶点的入度置为0呢?
    比如顶点5,若在顶点1、2、3、4的链表中出现过顶点5,那么要增加顶点5的入度,但是在遍历顶点5的链表时,又将顶点5的入度置为0了,那之前的从顶点1234到顶点5的边不是都没了吗?

  2. 因为是要把从字符串s的start位到当前位在hash中重置,修改提交后能accept,但是不修改居然也能accept