zoukankan      html  css  js  c++  java
  • 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=2;i<=n;i+=2)
        /*
           push_back()在数组的最后添加一个数据
        */  
    v.push_back(i); for(int i=1;i<=n;i+=2) v.push_back(i); for(int i=2;i<=n;i+=2) 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

  • 相关阅读:
    在vs2008中集成JavaScript Lint检查JavaScript语法
    (转载)SQL分页语句
    设置出错页
    判断2个输入框至少输入1个
    C#获取用户桌面等特殊系统路径
    创建存储过程的代码
    SqlParameter关于Like的传参数无效问题
    (转)利用Office里面的OWC组件进行画图
    firefox3不能获得html file的全路径的问题
    (转)使用ASP.NET上传图片汇总
  • 原文地址:https://www.cnblogs.com/leibao/p/8474048.html
Copyright © 2011-2022 走看看