» 分类为 Noip 的存档

关于C++ const 的全面总结

C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。 Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。   一、Const作用 如下表所示: No. 作用 说明 参考代码 1 可以定义const常量 const int Max = 100; 2 便于进行类型检查 const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误 void f(const int i) { ………} //对传入的参数进行类型检查,不匹配进行提示 3 可以保护被修饰的东西 防止意外的修改,增强程序的健壮性。 void f(const int i) { i=10;//error! } //如果在函数体内修改了i,编译器就会报错 4 可以很方便地进行参数的调整和修改 同宏定义一样,可以做到不变则已,一变都变 5 为函数重载提供了一个参考 class A { …… void f(int i)       {……} //一个函数 void f(int i) [...]

四则混合运算

c++的四则混合运算程序,可输出前缀后缀表达式,支持小数。

Vijos 1474

program lv; type node=record x,y:integer; end; var temp:node; i,j,k,n,hi:integer; arr:array [1..2500] of node; ans:array [1..2500] of longint; function get(a,b:node):longint; begin get:=(abs(a.x-b.x)+abs(a.y-b.y))*(abs(a.x-b.x)+abs(a.y-b.y)); end; begin read(n); for i:=1 to n do for j:=1 to n do begin read(hi); arr[hi].x:=i; arr[hi].y:=j; end; fillchar(ans,sizeof(ans),0); for i:=2 to n*n do for j:=1 to i-1 do if ((get(arr[i],arr[j])+ans[j])>ans[i]) then ans[i]:=get(arr[i],arr[j])+ans[j]; writeln(ans[n*n]); [...]

C语言中 qsort函数的使用

#include #include typedef struct node { int x, y; }Node; Node aa[20]; //按照x的值从小到大将结构体排序,关于结构体内的排序关键数据x的类型可以很多种 int comp1(const void *a, const void *b) { Node *c = (Node *)a; Node *d = (Node *)b; return (c->x > d->x); } //按照x从小到大排序,当x相等时按照y从大到小排序 int comp2( const void *a , const void *b ) { Node *c = (Node *)a; Node *d [...]

高精度计算

#include #define MAXN 400 typedef struct bigint { int data[MAXN]; int length; } Bigint; void printBigint(Bigint a) { int i; for(i = a.length – 1; i >= 0; i–) printf(“%d”, a.data[i]); } void mul(Bigint a, Bigint b, Bigint *c) { int i, j; memset(c, 0, sizeof(Bigint)); for(i = 0; i < a.length; i++) for(j = [...]

BUAA 1018

就是LCS,最长公共子序列,只不过恶心的是题目写的是擦去一个或多个字母变成’BUAA’,居然不包括一个也不擦,也就是说输入如果是’BUAA’,那么就No啦。 const MAX = 255; var d: array[0..MAX, 0..MAX] of integer; s, t : string; n, m, i, j, k : integer; begin readln(n); for k:=1 to n do begin readln(s); t := ‘BUAA’; m := length(s); d[0,0]:=0; for i:=1 to m do d[i,0]:=0; for j:=1 to 4 do d[0,j]:=0; for i:=1 to m do [...]

BUAA 10037

program buaa10037; var n, i, a, b : integer; function gcd(a, b:integer):integer; var t : integer; begin while a mod b 0 do begin t:=a; a:=b; b:=t mod b; end; gcd := b; end; begin readln(n); for i := 1 to n do begin readln(a, b); writeln(gcd(a, b)); end; end.

BUAA 10038

program buaa10038; var x1,x2,y1,y2:double; n, i : integer; begin readln(n); for i := 1 to n do begin readln(x1, y1, x2, y2); writeln(sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)):0:3); end; end.

BUAA 10036

program buaa10036; var n, t, c, i:integer; procedure move(a,b:char); begin inc(c); writeln(a,’ -> ‘,b); end; procedure h(x:integer;a,b,c:char); begin if x=1 then move(a,c) else begin h(x-1,a,c,b); move(a,c); h(x-1,b,a,c); end; end; begin readln(t); for i:=1 to t do begin c := 0; readln(n); h(n,’1′,’2′,’3′); writeln(‘Total Steps: ‘, c); end; end.

BUAA 10035

program buaa10035; var a, b, t, n, m, i, j : longint; begin readln(n); for i := 1 to n do begin readln(m); a := 0; b := 1; for j := 1 to m do begin t := a + b; a := b; b := t; end; writeln(a); end; end.