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

  • 相关阅读:
    WeX5开发指南
    移动web app开发框架
    [转]10款 Web 开发常备工具
    为兴趣求职:如何学习UI框架,请将你的看法观点写在评论下面
    10 个顶尖的 Linux 开源人工智能工具
    【转】编写Chrome扩展程序
    HDOJ 4455 Substrings 递推+树状数组
    iOS开发人员:事实上你还有非常多东西须要学
    鸡肋的JdbcRDD
    OFbiz实体引擎
  • 原文地址:https://www.cnblogs.com/leibao/p/8474048.html
Copyright © 2011-2022 走看看