月度归档:2015年01月

ACM-数据结构

点击量:19

{% blockquote 本文出自 http://svtter.com svtter.com %}
本文可以随意转载,但是转载请保留本信息.

Uvaoj的判题效率不是很高。。所以直接开下一章节。题目慢慢刷,先过一遍书,不然书都看不完了TAT。。

6.1 栈和队列

卡片游戏,回顾了下队列和STL

#include <stdio.h>
#include <queue>
#include <iostream>
using namespace std;
const int maxn = 100;
int q[maxn];
void ace()
{
    void ace2(int);
    int n;
    scanf("%d", &n);
    //init
    for(int i = 0; i < n; i++) q[i] = i+1;
    int front , rear;
    front = 0, rear = n;
    // 队列不为空
    while(front != rear)
    {
        printf("%d ", q[front++]);
        q[rear++] = q[front++];
    }
    printf("\n");
    ace2(n);
}
// STL 
void ace2(int n)
{
    queue <int> q;
    for(int i = 1; i <= n; i++) q.push(i);
    while(!q.empty())
    {
        printf("%d ", q.front());
        q.pop();
        q.push(q.front());
        q.pop();
    }
    printf("\n");
}
int main(int argc, const char *argv[])
{
    ace();
    return 0;
}

6.1.2栈的STL

#include <stdio.h>
#include <iostream>
#include <stack>
using namespace std;
const int maxn = 200;
int s[maxn];
void ace()
{
    int n;
    int a[maxn];
    int temp, top;
    int p, set;
    while(~scanf("%d", &n))
    {
        top = -1, p = 0, set = 1;
        for(int i = 0; i < n; i++) a[i] = i+1;
        for(int i = 0; i < n; i++)
        {
            scanf("%d", &temp);
            // 如果无法完成序列,只吸收输入值
            if(!set) continue;
            if(temp == a[p]) p++;
            else if(top != -1 && temp == s[top]) top--;
            else while(temp != a[p])
                {
                    s[++top] = a[p];
                    p++;
                    if(p == n)
                    {
                        set = 0;
                        break;
                    }
                }
        }
        if(set) printf("Yes");
        else printf("No");
        printf("\n");
    }
}
void ace2()
{
    int n;
    int a[maxn];
    int temp, p, set;
    while(~scanf("%d", &n))
    {
        stack <int> s;
        p = 0, set = 1;
        for(int i = 0; i < n; i++) a[i] = i+1;
        for(int i = 0; i < n; i++)
        {
            scanf("%d", &temp);
            // 如果无法完成序列,只吸收输入值
            if(!set) continue;
            if(temp == a[p]) p++;
            else if(!s.empty() && temp == s.top()) s.pop();
            else while(temp != a[p])
                {
                    s.push(a[p]);
                    p++;
                    if(p == n)
                    {
                        set = 0;
                        break;
                    }
                }
        }
        if(set) printf("Yes");
        else printf("No");
        printf("\n");
    }
}
int main()
{
    ace2();
    return 0;
}

6.2 链表和随机数发生器

链表的相关部分就不在赘述了。主要是随机数发生器。
很多人喜欢用rand()%N得到一个随即整数,但是n大于RAND_MAX的时候,就不好用了。
于是使用(double)rand()/RAND_MAX,然后在扩大n-1倍以后四舍五入,再+1

例如这样

// 获取1~m的随即整数
int random(int m)
{
    double a = (double)rand() / RAND_MAX;
    return (int) (a * (m-1) + 0.5);
}

6.3 二叉树

博客重新开始更新

点击量:5

{% blockquote 本文出自 http://svtter.com svtter.com %}
本文可以随意转载,但是转载请保留本信息.

重新开始更新自己的blog了,之前一段时间的文章都在 http://segmentfault.com/blog/svtter
segmentfault感觉着实不错= =

以后blog中各种发解题报告各种发思路各种发知识。

坦白说之前的blog真心是懒得更新= =

悲剧了

点击量:2

{% blockquote 本文出自 http://svtter.com svtter.com %}
本文可以随意转载,但是转载请保留本信息.

手贱删除了windows的注册表,因为之前装arch的时候硬盘有些位置没有对齐,造成我重装win7的时候把
archlinux也弄没了TAT最惨的莫过于一些文章都没有了。操作系统网络等资源倒是还能从github上找回,
但是似乎不是最新的。虽然是考完了,但是看到大把大把的总结资料没了也着实心疼。

不管啦,没了就没了吧。

这次同步更新!在segmentfault和我自己的博客上同步更新,一般segmentfault会更快一点。哎,一定
要及时备份数据,不然很容易就悲剧了。

因为hexo的主题神马的我没有备份(也有一个,不过比较老了)。所以有时间的时候再弄把。

Java-如何使用vim开发Java

点击量:7

{% blockquote 本文出自 http://svtter.com svtter.com %}
本文可以随意转载,但是转载请保留本信息.

在网上搜索一番,大部分此类文章都是在说配置,而且配置讲的一看就是没有深入的撸vim。这个时候就
需要我来深刻的讲讲这个问题了 — 国外也有一些开发者写过类似的文章,不过国外的开发者没有深层
的讲讲具体如何配置,仅仅是比较简单的说了一下应该用什么。

闲话少说,我们开始吧。

本文的作者认为,本文的读者已经学会使用vim的初步,至于安装,启动之类的东西作者不再赘述,
望读者海涵。

Vimrc的配置

如果想要用Vim撸Java,首先一个问题就是许多IDE自带的查错功能,这个笔者希望使用Syntastic来实现。
具体的方法是,安装Vundle(vim的插件配置工具,用于安装组合各类插件)。其实这个地方也可以不用
Vundle,但是笔者认为,vimer配置大量插件的最佳方法就是使用vunlde,或者patheon等等。总之,一
定需要一个插件管理。

安装Vundle还是比较轻松的,在github上搜索一下,经过一系列步骤即可。然后同样是位于github,搜
索Syntastic安装即可。

Syntastic是一个检查语法的vim插件,不仅仅支持Java,各种都支持,具体可以看看Syntastic的wiki

学习Ant

Ant是什么东西?简单来说,就是java的makefile。Syntastic的wiki对ant和maven均有支持,但是我个人
学习了Ant,另外eclipse里面的ant等等 — 如果想要探究一下,可以查看一下这篇文章

这里面说了一点笔者在ant上面的一点东西,还有ant学习的链接。

配置Syntastic

PS: 期末周这么悠闲的写博客真的好吗!!

说是配置Syntastic,更不如说是配置Syntastic的Java配置文件。

  1. 首先你需要在你的.vimrc中,添加 let g:syntastic_java_javac_config_file_enabled = 1
    用于使Syntastic读取配置文件生效。
  2. 选择build.xml,使用命令:SyntasticJavacEditConfig,输入:
    let g:syntastic_java_javac_custom_classpath_command =
    \ "ant -q build | grep echo | cut -f2- -d] | tr -d ' ' | tr ':' '\n'"
  3. 重启Vim,语法检查就完成了。

其他的插件

  • Bundle ‘vim-scripts/javacomplete’
  • Bundle ‘vim-scripts/javaDoc.vim’
  • ” Bundle ‘vim-scripts/Java-Syntax-und-Folding’
  • ” Bundle ‘vim-javacompleteex’ “更好的 Java 补全插件

以上插件均可以考虑使用,安装方法可能有所不同 — 但是个人认为最大的语法检查问题已经搞定了,
其他的问题应该都不是问题了吧 = =