1.前言
作为一名计算机专业的学生,在写学术论文的时候,不可避免的需要在论文中书写相关的算法。如果自己一点点调格式,可能会比较麻烦,而且显得非常不专业。在Latex中用相关的算法包,可以格式化我们的算法模块。
2.几种常用的格式
方式1
\documentclass[utf-8]{ctexart}
\usepackage{ctex}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{multirow}
\usepackage{amsmath}
\begin{document}
\begin{algorithm}[htb]
\caption{ 写算法名称}
\label{alg:Framwork}
\begin{algorithmic}[1] %这个1 表示从第一行开始显示行号,不写就不会显示行号
\REQUIRE ~~\\ %算法的输入参数:Input
输入1 \\
输入2 \\
\ENSURE ~~\\ %算法的输出:Output
\STATE 输入1
\STATE 输入2
\RETURN 返回值; %算法的返回值
\end{algorithmic}
\end{algorithm}
\end{document}
方式2
\documentclass[utf-8]{ctexart}
\usepackage{ctex}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{multirow}
\usepackage{amsmath}
\begin{document}
\begin{algorithm}[h]
\caption{常用的循环写法}
\begin{algorithmic}[1]
\STATE $//$ for each
\FOR{each $i \in [1,9]$}
\STATE initialize a tree $T_{i}$ with only a leaf (the root);\
\STATE $T=T \cup T_{i};$\
\ENDFOR
\STATE $//$ for all
\FORALL {$c$ such that $c \in RecentMBatch(E_{n-1})$}
\label{code:TrainBase:getc}
\STATE $T=T \cup PosSample(c)$;
\label{code:TrainBase:pos}
\ENDFOR
\STATE $//$传统for循环
\FOR{$i=1$; $i<n$; $i++$ }
\STATE $//$ Your source here;
\ENDFOR
\STATE $//$ while循环
\WHILE {$(|E_n| \leq L_1 )and( D \neq \phi)$}
\STATE Selecting the most recent classifier $c_i$ from $D$;
\STATE $D=D-c_i$;
\STATE $E_n=E_n+c_i$;
\ENDWHILE
\end{algorithmic}
\end{algorithm}
\end{document}
方式3
\documentclass[utf-8]{ctexart}
\usepackage{ctex}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{multirow}
\usepackage{amsmath}
\begin{document}
\begin{algorithm}[h]
\caption{if-else语句的书写}
\begin{algorithmic}[1]
\FOR {$i=1;i<10;i++$}
\IF {$i\%3==0 $}
\STATE cout<<i<<endl;
\ELSIF{$i\%3==1$}
\STATE cout<<i+1<<endl;
\ELSIF{$i\%3==2$}
\STATE cout<<i+2<<endl;
\ELSE
\STATE cout<<"error"<<endl;
\ENDIF
\ENDFOR
\end{algorithmic}
\end{algorithm}
\end{document}