算法习题---5.1代码对齐(UVa1593)

一:题目

将不规范的若干行代码进行对齐。对齐按照最长字符串进行操作。见样例输入

(一)样例输入

??start:??integer;????//?begins?here
stop:?integer;?//??ends?here
?s:??string;
c:???char;?//?temp
注: ? 表示空格

(二)样例输出

start: integer; // begins here   
stop:  integer; // ends   here
s:     string;
c:     char;    // temp   
按照每列最长字符串空一格对齐

二:代码实现

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iomanip>
#include <vector>
#include <string>
#include <sstream>

#define MAX_LINES 1000
#define MAX_LEN 180

using namespace std;

int main()
{
    FILE* fp = freopen("data5_1_h.in", "r", stdin);
    freopen("data5_1_h.out", "w", stdout);
    //收集代码信息
    int n = 0;
    string code,single_c;
    vector<string> codes[MAX_LINES];
    int code_max_len[MAX_LEN] = { 0 };

    //进行信息获取
    while (!feof(fp))
    {
        getline(cin, code);
        stringstream ss(code);
        int i = 0;

        while (ss>>single_c)
        {
            codes[n].push_back(single_c);
            code_max_len[i] > single_c.length() ? i++ : code_max_len[i++] = single_c.length() + 1;
        }
        n++;
    }

    //进行信息打印
    for (int i = 0; i <= n; i++)
    {
        int j = 0;
        for (vector<string>::iterator it = codes[i].begin(); it != codes[i].end(); it++,j++)
        {
            cout << setw(code_max_len[j])<<setiosflags(ios::left)<< *it;
        }
        cout << endl;
    }
    freopen("CON", "r", stdin);
    freopen("CON", "w", stdout);
    return 0;
}

原文地址:https://www.cnblogs.com/ssyfj/p/11528906.html

时间: 2024-10-29 12:34:35

算法习题---5.1代码对齐(UVa1593)的相关文章

自动红眼移除算法 附c++完整代码

说起红眼算法,这个话题非常古老了. 百度百科上的描述: "红眼"一般是指在人物摄影时,当闪光灯照射到人眼的时候,瞳孔放大而产生的视网膜泛红现象. 由于红眼现象的程度是根据拍摄对象色素的深浅决定的,如果拍摄对象的眼睛颜色较深,红眼现象便不会特别明显. "红眼"也指传染性结膜炎. 近些年好像没有看到摄影会出现这样的情况,毕竟科技发展迅速. 记得最早看到红眼移除算法是在ACDSee 这个看图软件的编辑功能区. 当然,当时ACDSee 也没有能力做到自动去红眼,也需要进行手

编程算法 - 二叉树的深度 代码(C)

二叉树的深度 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一棵二叉树的根节点, 求该树的深度. 依次选择最深的左右子树, 然后递归加1. 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <stdio.h> #include <stdlib.h> #include <

编程算法 - 迷宫的最短路径 代码(C++)

迷宫的最短路径 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 给定一个大小为N*M的迷宫. 迷宫由通道和墙壁组成, 每一步可以向邻接的上下左右四格的通道移动. 请求出从起点到终点所需的最小步数. 请注意, 本题假定从起点一定可以移动到终点. 使用宽度优先搜索算法(DFS), 依次遍历迷宫的四个方向, 当有可以走且未走过的方向时, 移动并且步数加一. 时间复杂度取决于迷宫的状态数, O(4*M*N)=O(M*N). 代码: /* * m

multi-cursor做代码对齐

.title { text-align: center; margin-bottom: .2em } .subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top: 0 } .todo { font-family: monospace; color: red } .done { font-family: monospace; color: green } .priority { font-fami

时空上下文视觉跟踪(STC)算法的解读与代码复现(转)

本文转载自zouxy09博客,原文地址为http://blog.csdn.net/zouxy09/article/details/16889905:在此,仅当笔记mark一下及给大家分享一下. 时空上下文视觉跟踪(STC)算法的解读与代码复现 [email protected] http://blog.csdn.net/zouxy09 本博文主要是关注一篇视觉跟踪的论文.这篇论文是Kaihua Zhang等人今年投稿到一个会议的文章,因为会议还没有出结果,所以作者还没有发布他的Matlab源代码

编程算法 - 翻转单词顺序 代码(C)

翻转单词顺序 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个英文句子, 翻转句子中单词的顺序, 但单词内字符的顺序不变. 首先翻转(reverse)整个句子, 然后查找空格, 如遇到空格, 则翻转前面的单词, 或遇到结束符, 同样进行翻转. 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #inclu

编程算法 - 左旋转字符串 代码(C)

左旋转字符串 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部. 请定义一个函数实现字符串左旋转操作的功能. 编程珠玑, 首先翻转前部分, 再翻转后部分, 最后全部翻转. 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <stdio

编程算法 - 字符串的排列 代码(C)

字符串的排列 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个字符串, 打印出该字符串中字符的所有排列. 方法: 使用递归依次交换位置, 打印输出. 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <stdio.h> void Permutation(char* pStr, char

最近邻算法的图像缩放代码

原理挺简单,不啰嗦,直接上代码了 void ImgResize(uchar* pSrcImg, uchar* pDstImg, int srcW, int srcH, int dstW, int dstH) { double rateH = (double)srcH /(double) dstH; double rateW = (double)srcW / (double)dstW; for (int i=0; i<dstH; i++) { int tSrcH = (int)(rateH*dou