首页 > 编程语言 >算法刷题记录

算法刷题记录

时间:2023-03-18 18:55:15浏览次数:70  
标签:记录 int vecrow back ++ 算法 push include 刷题

http://acm.hdu.edu.cn/showproblem.php?pid=1094

#include <iostream>
#include <vector>

int main()
{
    using namespace std;
    
    vector<int> vecrow;
    vector<int> vecout;
    
    while (char c = getchar())
    {
        if (c == '\n')  /*行末 或者 空行回车结束*/
        {
            if (vecrow.size() == 0)
                break;
            else
            {
                int sum = 0;
                for (auto it = vecrow.begin(); it != vecrow.end(); it++)
                {
                    sum += *it;
                }
                vecout.push_back(sum);
                vecrow.clear();
            }
        }
        else
        {
            ungetc(c,stdin);  /*回退读取*/
            int fornum;
            cin >> fornum;
            int rowele;
            for (int i = 0; i < fornum; i++)
            {
                cin >> rowele;  /*最后一次 for 循环结束 ,仍剩余行末的换行符在 stdin */
                vecrow.push_back(rowele);
            }
        }
    }
    
    if (vecout.size() != 0)
    {
        for (auto it = vecout.begin(); it != vecout.end(); it++)
        {
            cout << *it << endl;
        }

    }
    
    return 0;
}

 https://acm.hdu.edu.cn/showproblem.php?pid=1095

 

 

 只修改上面的 if 对应的 else :

else
        {
            if (c != ' ')
            {
                ungetc(c, stdin);
                int rowele;
                cin >> rowele;
                vecrow.push_back(rowele);
            }
            /*ungetc(c,stdin);
            int fornum;
            cin >> fornum;
            int rowele;
            for (int i = 0; i < fornum; i++)
            {
                cin >> rowele;
                vecrow.push_back(rowele);
            }*/
        }

https://acm.hdu.edu.cn/showproblem.php?pid=1096

    int rownum;
    vector<int> vecrow;
    vector<int> vecout;
    char c = getchar();

    if ( c ==  '\n')
        return 0;
    else
    {
        ungetc(c, stdin);
        cin >> rownum;
        if (rownum > 0)
        {
            for (int i = 0; i < rownum; i++)
            {
                int rowhead;
                cin >> rowhead;
                if (rowhead > 0)
                {
                    for (int j = 0; j < rowhead; j++)
                    {
                        int rowele;
                        cin >> rowele;
                        vecrow.push_back(rowele);
                    }
                    int sum = 0;
                    for (auto it = vecrow.begin(); it != vecrow.end(); it++)
                    {
                        sum += *it;
                    }
                    vecout.push_back(sum);
                    vecrow.clear();
                }
                else
                {
                    vecout.push_back(0);
                }


            }
            /*打印*/
            for (auto it = vecout.begin(); it != vecout.end(); it++)
            {
                cout << *it << endl;
            }
            
        }
    }

https://acm.hdu.edu.cn/showproblem.php?pid=2000

 

 

 

#include <iostream>
#include <list>
#include <vector>
#include <algorithm>

int main()
{
    using namespace std;

    list<char> lcRow;
    vector<char> vcOut;

    while (char c = getchar())
    {
        if (c == '\n')
        {
            if (lcRow.size() == 0)
                break;
            else
            {
                lcRow.sort();  /*排序*/
                for (list<char>::iterator it = lcRow.begin(); it != lcRow.end(); it++)
                {
                    vcOut.push_back(*it);
                    vcOut.push_back(' ');
                }
                vcOut[vcOut.size() - 1] = '\n';
                lcRow.clear();
            }
        }
        else
        {
            lcRow.push_back(c);
        }
    }

    for (vector<char>::iterator it = vcOut.begin(); it != vcOut.end(); it++)
    {
        cout << *it;
    }

}

https://acm.hdu.edu.cn/showproblem.php?pid=2001

输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。 对于每组输入数据,输出一行,结果保留两位小数。

#include <iostream>
#include <vector>
#include <math.h>

int main( )
{
    using namespace std;

    vector<float> vcLocate;
    vector<float> vcOut;

    while (char c = getchar())
    {
        if (c == '\n')
        {
            if (vcLocate.size() == 0)
                break;
            else //计算一组坐标
            {
                float span = sqrt( pow( (vcLocate[0] - vcLocate[2] ), 2) + pow((vcLocate[1] - vcLocate[3]),2) );
                vcOut.push_back(span);
                vcLocate.clear();
            }
        }
        else
        {
            if (c != ' ')
            {
                ungetc(c, stdin);
                float element;
                cin >> element;
                vcLocate.push_back(element);
            } 
        }
    }

    cout.setf(ios::fixed);
    cout.precision(2);

    for (auto it = vcOut.begin(); it != vcOut.end(); it++)
    {
        cout  << *it << endl;
    }

    return 0;
}

https://acm.hdu.edu.cn/showproblem.php?pid=2003

#include <iostream>
#include <list>
#include <vector>
#include <math.h>
#include <algorithm>

int main()
{
    using namespace std;

    vector<float> vcout;
    float num;
    char c = getchar();
    if (c == '\n')
        return 0;
    else
        ungetc(c , stdin);

    while (cin >> num)
    {
        vcout.push_back(num);
        c = getchar(); //读取每行末尾的 换行符

        c = getchar();
        if (c == '\n')  // 连续两个换行符 表示结束, 打印结果。
        {
            for (auto it = vcout.begin(); it != vcout.end(); it++)
            {
                cout << fabs(*it) << endl;
            }
        }
        else
            ungetc(c, stdin);

    }

    return 0;
}

https://acm.hdu.edu.cn/showproblem.php?pid=2004

int main()
{
    using namespace std;

    vector<int> vcscore;
    char c = getchar();
    if (c == '\n')
        return 0;
    else
        ungetc(c , stdin);

    int num;
    while (cin >> num)
    {
        vcscore.push_back(num);
        c = getchar(); //读取每行末尾的 换行符

        c = getchar();
        if (c == '\n')  // 连续两个换行符 表示结束, 打印结果。
        {
            for (auto it = vcscore.begin(); it != vcscore.end(); it++)
            {

                if (90 <= *it && *it <= 100)
                    cout << 'A' << endl;
                else if (80 <= *it && *it <= 89)
                    cout << 'B' << endl;
                else if (70 <= *it && *it <= 79)
                    cout << 'C' << endl;
                else if (60 <= *it && *it <= 69)
                    cout << 'D' << endl;
                else if (0 <= *it && *it <= 59)
                    cout << 'E' << endl;
                else
                    cout << "Score is error!" << endl;
            }
        }
        else
            ungetc(c, stdin);

    }

    return 0;
}

 

标签:记录,int,vecrow,back,++,算法,push,include,刷题
From: https://www.cnblogs.com/Huae/p/17229633.html

相关文章

  • 代码随想录算法训练营Day46 动态规划
    代码随想录算法训练营代码随想录算法训练营Day46动态规划|● 139.单词拆分关于多重背包,你该了解这些!背包问题总结篇!139.单词拆分题目链接:139.单词拆分给定一......
  • 算法 -- 分割两个字符串得到回文串
    分割两个字符串得到回文串提示中等114相关企业给你两个字符串a和b,它们长度相同。请你选择一个下标,将两个字符串都在相同的下标分割开。由a可以得到两个字符......
  • java调用WebService(未完成)记录篇
    背景:因工作需要和一个Sap相关系统以WebService的方式进行接口联调,之前仅听过这种技术,但并没有实操过,所以将本次开发相关的踩坑进行记录通过一个实例来认识webservice服......
  • #yyds干货盘点 【React工作记录二十四】ant design form赋值问题
     目录​​前言​​​​导语​​​​解决思路​​​​总结​​前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五......
  • 【基础算法】简单排序-冒泡排序
    【基础算法】简单排序-冒泡排序BubbleSortisthesimplestsortingalgorithmthatworksbyrepeatlyswappingtheadjacentelementsiftheyareinthewrongorde......
  • 一次简单的性能测试记录
     性能测试1.性能测试的场景:对性能压测接口:抢购进行测试 过程:刚开始没有提供接口,自己去页面抓包然后通过登录接口获取token才能去验证"藏品详情""藏品列......
  • 常用排序算法
    1.冒泡排序冒泡排序:相邻的数两两比较,小的放前面,大的放后面。冒泡排序(BubbleSort)也是一种简单直观的排序算法。它重复的遍历过要排序的数列,一次比较相邻的两个元素,如果......
  • 希尔排序、快速排序、KMP算法
    希尔排序背景对N个样本进行排序,顺序为从小至大步骤第一步:对样本不断确定分组的间隔gap,确定分组次数X-》对应第一个循环第一次gap=N/2;第二次gap=gap/2;......
  • 一些做题记录
    难度从\(1\sim10\)分类,越小越简单。CF1100D算法难度:2实现难度:3思维难度:7具体思路:这个数据范围很奇怪,而且,这东西很人类智慧。具体而言,先把王挪到棋盘正中间,然后将......
  • c++ 影响多线程速度的因素记录
    目录0.序言1.缓存行同步问题/共享数据竞争1.1测试代码1.2测试逻辑1.3测试结果1.4小结2.任务颗粒度过小问题2.1测试代码2.1测试逻辑2.2测试结果2.3小结3.缓存未......