编程启蒙 | 第51课 认识 vector

文摘   教育   2024-11-01 14:33   广东  
《信息学奥赛一本通●编程启蒙 C++版
适用于刚开始学习 C++语言的学中高年级、初中低年级的同学。


第五章 数的存储与组织 

第51课认识 vector


3301:【例51.1】 删除元素

http://bas.ssoier.cn:8086/problem_show.php?pid=3301

#include<bits/stdc++.h>#include <vector>
using namespace std;int n,x,y;vector<int>v;int main() { cin>>n; for(int i=1; i<=n; i++) { cin>>y; v.push_back(y); } cin>>x; v.erase(v.begin()+x-1); for(int i=0; i<n-1; i++) cout<<v[i]<<' '; return 0;}


3302【例51.2】 插入元素

http://bas.ssoier.cn:8086/problem_show.php?pid=3302

#include<bits/stdc++.h>#include <vector>
using namespace std;int n,x,y;vector<int>v;int main() { cin>>n; for(int i=1; i<=n; i++) { cin>>x; v.push_back(x); } cin>>x>>y; v.insert(v.begin()+x-1,y); for(int i=0; i<=n; i++) cout<<v[i]<<' '; return 0;}

                                  3303【例51.3】 平移数据


http://bas.ssoier.cn:8086/problem_show.php?pid=3303

#include<bits/stdc++.h>#include <vector>
using namespace std;int n,x;vector<int>v;int main() { cin>>n; for(int i=1; i<=n; i++) { cin>>x; v.push_back(x); } x=v[0]; v.push_back(x); v.erase(v.begin()+0); for(int i=0; i<n; i++) cout<<v[i]<<' '; return 0;}
































3304练51.1 向量点积计算

http://bas.ssoier.cn:8086/problem_show.php?pid=3304

#include<bits/stdc++.h>using namespace std;int main() {    long long n;//定义     cin>>n;//读入     long long a[n+10],b[n+10];//a和b     for(int i=1;i<=n;i++){      cin>>a[i];//读入a   }    for(int i=1;i<=n;i++){      cin>>b[i];//读入b   }  long long ls,cnt=0;//定义ls和cnt(cnt一定记得初始化!!!)     for(int i=1;i<=n;i++){      ls=a[i]*b[i];//将a[i]*b[i]结果存起来      cnt+=ls;//加上去   }  cout<<cnt;    return 0;}



















3305练51.2 老鹰捉小鸡

http://bas.ssoier.cn:8086/problem_show.php?pid=3305

/*试编一程序,模拟10次位置的变化过程。1 2 3 4 52 3 4 5 13 4 5 1 23 4 1 2 3.........*/#include<iostream>using namespace std;int main(){  int i,j,a[6],n;    //产生一个随机值,因为a[0]是局部变量   //cout<<a[0]<<endl;    for(i=1;i<6;i++)    a[i]=i;    //输出第1次的位置  i=1;  cout<<i<<": ";   for(j=1;j<6;j++)     cout<<a[j]<<" ";    cout<<endl;    for(i=2;i<=10;i++)  {    //移动位置    for(j=0;j<=4;j++)        a[j]=a[j+1];      a[5]=a[0];      //输出位置    cout<<i<<": ";         for(j=1;j<=5;j++)        cout<<a[j]<<" ";            cout<<endl;    }    return 0;}/*一般讲课略难做题要做比讲课容易一些的题目 */


3306练51.3 纸杯猜数

http://bas.ssoier.cn:8086/problem_show.php?pid=3306

#include<bits/stdc++.h>using namespace std;int main(){  int n,m,a[50005],c,b;  cin>>n>>m;  for(int i=1;i<=n;i++){    cin>>a[i];  }  for(int i=1;i<=m;i++){    cin>>c>>b;    swap(a[c],a[b]);  }  for(int i=1;i<=n;i++){    cout<<a[i]<<" ";   }  return 0;}


更多信奥内容,请关注【信奥营】

[1].信息学奥赛一本通(C++)题解及知识点

[2].信奥一本通.编程启蒙C++题解合集

[3].信息学奥赛 | 备赛CSP-JS 常用网站

[4].信息学奥赛 | 信息学竞赛推荐书(更新)

信奥营
信息学奥赛、白名单赛事、科技特长升学!
 最新文章