zoukankan      html  css  js  c++  java
  • UVA 1593: Alignment of Code(模拟 Grade D)

    题意:

    格式化代码。每个单词对齐,至少隔开一个空格。

    思路:

    模拟。求出每个单词最大长度,然后按行输出。

    代码:

    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    
    char words[1200][190][90];
    int maxLen[190];
    
    char tmp[200];
    
    typedef char * pchar;
    
    int readStr(pchar &str, char *out) {
        int num = 0;
        int ret = sscanf(str, "%s%n", out, &num);
        //printf("str = %s
    ", str);
        str += num;
        return ret;
    }
    
    void myprint(char *str, int len) {
        int i = 0;
        for (i = 0; str[i]; i++) {
            putchar(str[i]);
        }
        for (; i < len; i++) {
            putchar(' ');
        }
    }
    
    int main() {
        char *p;
        int nowLine = 0;
        while (gets(tmp)) {
            p = tmp;
            int i = 0;
            while (readStr(p, words[nowLine][i]) != -1) {
                i++;
            }
            nowLine++;
        }
    
        for (int i = 0; i < nowLine; i++) {
            for (int j = 0; j < 185; j++) {
                if (strlen(words[i][j]) > maxLen[j]) {
                    maxLen[j] = strlen(words[i][j]);
                }
            }
        }
    
        for (int i = 0; i < nowLine; i++) {
            for (int j = 0; j < 185; j++) {
                if (strlen(words[i][j]) != 0) {
                    if (j != 0) printf(" ");
                    if (strlen(words[i][j+1])) myprint(words[i][j], maxLen[j]);
                    else printf("%s", words[i][j]);
                } else break;
            }
            printf("
    ");
        }
    
        return 0;
    }
  • 相关阅读:
    计算机网络面试小知识总结(转载)
    williamisnotme@gmail.com
    jdk1,8 HashMap
    Mybatis 为什么不要用二级缓存
    CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
    一级缓存,二级缓存
    mock单测
    java8函数式编程(转载)
    volatile解析
    JVM 技术分享(初级)
  • 原文地址:https://www.cnblogs.com/shinecheng/p/4031958.html
Copyright © 2011-2022 走看看