C++ 笔试输入输出模板

 1.一维数组

#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int num;
    cin >> num;
    vector<int> nums;
    int temp_num;
    for (int i = 0; i < num; i++)
    {
        cin >> temp_num;
        nums.push_back(temp_num);
    }
    return 0;
}

2.二维数组

#include "stdlib.h"
#include <iostream>
#include<vector>
#include <iomanip>
using namespace std;


int main()
{
    int m, n;
    //cout << "请输入行和列:";
    cin >> m >> n;

    //注意下面这一行:vector <int后两个 "> "之间要有空格!否则会被认为是重载 "> > "。   
    vector<vector<int> > p(m, vector<int>(n));

    //cout << "请输入数据:";
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            cin >> p[i][j];

    //cout << "输出数据:" << endl;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
            cout  << p[i][j];
        cout << endl;
    }
    system("pause");
    return 0;
}

3.字符串

  输入不带空格的字符串

 char str[30];
 cin>>str;
 for(int i=0;i<5;i++){
     cout<<str[i];
 }

 输入带空格的字符串

char str[30];
cin.getline(str,len);//读入整行数据,它使用回车键输入的换行符来确定输入结尾。
//cin.get(str,len);//这个还会保留换行符

输入字符串

string str;
getline(cin,str);

 

#include <iostream>
#include <vector>

using namespace std;
/**
题意:存在一根电线杆,可以是第一根或者最后一根,在该电线杆前的电线杆的高度是不增的,
在它之后的电线杆的高度是不减的,请求出最少需要调整多少根电线杆的高度、输入n+1行
第一行整数n表示电线杆数剩下n行表示电线杆的高度
10
6 3 4 3 3 4 5 5 4 6
输出2
注意是存在,至少调整的数量、
*/

/**
 *解题思路:就是就是从左标记不满足非递减的数据,从右到左标记不满足非递减的数,
 * 然后统计i处不满足条件的标记数放在数组中,然后去其中的最小的数。
 */

   int  adjustcount(int n,vector<int> a)
   {
       vector<int>  dec;
       vector<int>  inc;
       int low=a[0]; //参考值
       for(int i=1;i<n;i++){
           if(a[i]>low){
               dec.insert(dec.begin()+i,1);
           }else{
               low=a[i];
           }
       }
       low=a[n-1];
       for(int j=n-2;j>-1;j--){
           if(a[j]>low)
           {
             inc.insert(inc.begin()+j,1);

           }else{
               low=a[j];
           }
       }
       vector<int>  res;
       for(int i=0;i<n;i++){
         int sum1=0;
         int sum2=0;
         //计算不满足要求的电线杆需要移动的根数
         for(int k=0;k<i;k++){
             sum1 +=dec[k];
         }
         for(int m=i+1;m<n;m++){
             sum2 +=inc[m];
         }
         res.insert(res.begin()+i,sum1+sum2);

       }
       int min=res[0];
     //遍历输出最小值
       for(int i=0;i<n;i++){
           if(min>res[i]){
               min=res[i];
           }
       }
       return min;
   }

int main(int argc, char *argv[])
{
    int  num;

    cin>>num;
    int  linehight;
    vector<int>  nums;
    for(int i=0;i<num;i++){
        cin>>linehight;
        nums.push_back(linehight);
    }
    int min=adjustcount(num,nums);
    cout<<min;
 //   cout << "Hello World!" << endl;
    return 0;
}

 

 

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值