c++实现一个小算法
题目:有n个格子,每个格子里有坦克,坦克有两滴血,你向格子里投掷炸弹,每次命中坦克他掉一滴血并随机像左或者右移动一个格子,问最少炸几次能把全部坦克炸完。
题解:先向偶数格子投掷炸弹,所有的坦克全跑到奇数格子里,然后再向奇数格子里投掷炸弹,消灭掉之前偶数格子里的坦克并且所有的坦克全跑到偶数格子里,再向偶数格子投掷炸弹,消灭所有坦克。次数为n+(int)n/2;
代码如下:
/*包含c++的所有头文件*/
#include <bits/stdc++.h>
using namespace std;
/*
vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.
声明一个int向量以替代一维的数组:vector<int> v(等于声明了一个int数组v[],大小没有指定,可以动态的向里面添加删除)
*/
vector<int> v;
int main(){
int n;
/*
cin>> 和 cout<< 是c++语言的标准输入输出流。cin>>n的意思是输入数据到变量n
*/
cin>>n;
for(int i=;i<=n;i+=)
/*
push_back()在数组的最后添加一个数据
*/
v.push_back(i);
for(int i=;i<=n;i+=)
v.push_back(i);
for(int i=;i<=n;i+=)
v.push_back(i);
/*
size()当前使用数据的大小
首先输出数组v当前的数据大小,然后输出一个换行符
c++里的标准输出语句,例如:
#include <iostream.h>
void mian()
{
int x=100;
cout<<x<<endl<<x;
} 编译执行后你将看到的结果是:
100
100 "cout<<x<<endl可以翻看来看,首先输出x变量的值,然后输出一个换行符,最后在输出一次x变量的值(只有基本数据类型以及字符串数组可以直接用cout输出)。
*/
cout<<v.size()<<endl;
/*
it是定义的迭代器,迭代器其实是一种指针,++it操作的是指针的地址值
auto关键字会根据v.begin()的返回值类型自动推断变量it的数据类型
*/
/*
begin()得到数组头的指针 end()得到数组的最后一个单元+1的指针
*/
for(auto it=v.begin();it!=v.end();++it)
cout<<*it<<' ';
/* 程序输出结束 */
cout<<endl;
}
关于vector容器,详见:http://blog.csdn.net/hancunai0017/article/details/7032383
c++实现一个小算法的更多相关文章
- 每天一个小算法(Shell sort5)
希尔排序的关键在于步长的选取. 希尔排序的复杂度比较复杂,主要跟步长的选择有关,大概是 O(n logn^2),一般认为就是介于 O(n^2) 和 O(n logn) 之间.最好步长比较复杂,一般第一 ...
- 每天一个小算法(Shell Sort3)
希尔算法自己编了一个,循环很多,很不美观,不过运行正确: c语言实现: #include <stdio.h> #include <stdlib.h> #define LEN 2 ...
- 每天一个小算法(4)----在O(1)时间删除指定结点
O(1)时间内删除结点的思路只能是复制该结点下一个结点的数据,然后删除该结点的下一个结点,来等效删除此结点. 需要注意的地方是删除头结点和尾结点的处理. #include <stdio.h> ...
- 每天一个小算法(insertion sort3)
今天多看看插入排序的理论部分. 先贴几个概念吧: 1.伪代码(英语:pseudocode),又称为虚拟代码,是高层次描述算法的一种方法.它不是一种现实存在的编程语言(已经出现了类似伪代码的语言,参见N ...
- python3 自己写的一个小算法(比对中文文本相似度)
函数使用说明: 函数的三个参数分别是“匹配语句”,“匹配语料”,“相关度”: 匹配语句,和匹配预料中的语句匹配的语句,必须为字符串: 匹配语料,被匹配语句来匹配的语句列表,必须为列表: 相关度,函数只 ...
- 感冒了~ vs中py和vb实现一个小算法
1+1*2+1*2*3+--+1*2*3*n 下面是窗体,就一个按钮和编辑框. 中途还遇到了编码问题,但是感冒太难受,加上明天还要上课.就睡了~ 晚安世界.
- Python数学运算的一个小算法(求一元二次方程的实根)
请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程:ax² + bx + c = 0的两个解. #!/usr/bin/env python # -*- coding: ...
- 每天一个小算法(Heapsort)
#include "stdio.h" #include "stdlib.h" #define Num 10 Heap(int arr[],int i,int n ...
- 每天一个小算法(matlab armijo)
下面是 armijo线搜索+最速下降法的小程序,matlab用的很不熟,费了不少劲. 函数: function g=fun_obj(x) syms a b f = 1/2*a^2+b^2-a*b-2* ...
- 每天一个小算法(5)----找到链表倒数第K个结点
估计这个问题在面试中被问烂了. 思路是先找到正数的第K个结点的指针pT,然后和指向头结点的指针pN一起向后移动,直到第K个指针指向NULL,此时pN指向的结点即倒数第K个结点. 如图: #includ ...
随机推荐
- vue.js中的各种问题记录(包括环境问题和学习笔记)
一.this relative module was not found: 问题的意思是这个模块找不到了 解决方法: 1)查看你入口文件的路径是否写错: 2)查看360杀毒是否拦截了你的文件. 二.v ...
- 使用Botkit和Rasa NLU构建智能聊天机器人
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 我们每天都会听到关于有能力涉及旅游.社交.法律.支持.销售等领域的新型机器人推出的新闻.根据我最后一次查阅的数据,单单Facebook Me ...
- JSTL与EL的区别
JSTL JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的.JSTL只能运行在支持J ...
- Centos7-卸载自带的jdk 安装jdk8
卸载JDK Centos7一般都会带有自己的openjdk,我们一般都回用oracle的jdk,所以要卸载 步骤一:查询系统是否以安装jdk #rpm -qa|grep java 或 #rpm ...
- scrapy_数据收集
什么是数据收集器? 数据以key/value形式存在,收集一些状态,简化数据收集的状态 计算到底发送了多少request等等统计信息 如何对404页面进行设置? 通过response.status等于 ...
- JavaScript小结
语法小结 /** * Created by M.C on 2017/5/26. */ /*弹框*/ //var message = "Hello world"; //alert(m ...
- java 获取ip地址和网络接口
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Jmeter_脚本参数化与内存溢出的解决方案
这一篇文章随便说一下JMETER的脚本参数化 1:Parameters的两种参数化方法 1.1:函数助手参数化 首先准备你的参数数据.我在bin/data中新建了一个dat文件,记事本另存为修改编码为 ...
- Java中常见的排序方法
本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示1)插入排序(直接插入排序.希尔排序)2)交换排序(冒泡排序.快速排序)3)选择排序(直接选择排序.堆排序)4)归并排序5)分配排序(基 ...
- tomcat配置JNDI获取数据源
各个web工程可以通过工程内的xml文件配置访问数据库的数据源,这样的配置是各个工程私有的.基于JNDI为tomcat配置数据源,则可以做成全局的,各工程只需要通过便签引用数据源即可. 1.需要将数据 ...