白书(刘汝佳)
da_fan_shu_
这个作者很懒,什么都没留下…
展开
-
例题3-1
开灯问题#include#includeint n, k;bool lightState[1005];int main(){ memset(lightState,false,sizeof(lightState)); cin>>n>>k; int i; for(i=1;i<=k;i++){ int j=1; while(i*j<=n){原创 2012-11-10 16:52:44 · 295 阅读 · 0 评论 -
例题7.5.1
/* @title: 埃及分数 @method: 迭代加深搜索(DFID) @author: da_fan_shu_ @source: 算法竞赛入门经典例题7-2 @reference: http://www.docin.com/p-15271287.html */ #include#includeusing namespace std;const原创 2012-12-02 16:39:40 · 433 阅读 · 0 评论 -
例题6.3.1
小球下落#include#includeconst int MAXD=20;int s[1<<MAXD];int main(){ int D, I; while(scanf("%d%d",&D,&I)==2){ memset(s,0,sizeof(s)); int k, n=(1<<D)-1; for(int i=0;i<I;i++){原创 2012-11-19 13:21:02 · 535 阅读 · 1 评论 -
例题6.1.2
铁轨#includeconst int MAXN=1000+10;int n,target[MAXN];int main(){ while(scanf("%d",&n)==1){ int stk[MAXN], top=0; for(int i=1;i<=n;i++){ scanf("%d",&target[i]); } int A=1原创 2012-11-17 22:33:10 · 280 阅读 · 0 评论 -
例题6.4.2
走迷宫#include#includeconst int MAXN=100+10;int n,m;char name[4]={'U','R','D','L'};int q[MAXN*MAXN],maze[MAXN][MAXN];int father[MAXN][MAXN],dist[MAXN][MAXN],vis[MAXN][MAXN];int dx[4]={0原创 2012-11-20 14:20:43 · 403 阅读 · 0 评论 -
例题6.4.3
拓扑排序#include#include#includeconst int MAXN=1000+10;int c[MAXN], n;int topo[MAXN], t;int G[MAXN][MAXN];bool dfs(int u){ c[u]=-1; for(int v=0;v<n;v++){ if(G[u][v]){ if(c原创 2012-11-20 17:54:53 · 363 阅读 · 0 评论 -
例题6.3.2
层次遍历#include #include #include using namespace std ; const int MAXN = 256 ; const int root = 1 ; int cnt , vis[MAXN] , val[MAXN] , Left[MAXN] , Right[MAXN] ; int NewN原创 2012-11-20 11:45:01 · 320 阅读 · 0 评论 -
例题6.3.3
二叉树重建#include#includechar s1[256],s2[256],ans[256];void build(int n,char* s1,char* s2,char* s){ if(n<=0){ return; } int p=strchr(s2,s1[0])-s2; build(p,s1+1,s2,s); build(n-p-原创 2012-11-20 12:13:11 · 244 阅读 · 0 评论 -
例题6.4.1
黑白图像#include#include const int MAXN=256;int mat[MAXN][MAXN], vis[MAXN][MAXN];void dfs(int x,int y){ if(!mat[x][y]||vis[x][y]){ return; } vis[x][y]=1; dfs(x,y-1); dfs(x-1,y原创 2012-11-20 12:35:28 · 300 阅读 · 0 评论 -
例题6.4.4
欧拉回路#include #include using namespace std;ifstream fin("in.txt");#define LEN 1001bool visited[LEN];bool arc[LEN][LEN];int degree[LEN];int n,m;void dfs(int v) //深度优先遍历原创 2012-11-20 21:12:18 · 263 阅读 · 0 评论 -
例题8.3.5
最大值最小化//目标学会用猜数字(二分)的方法,换个角度来解决问题 #include#include#includeconst int maxn=100000;int A[maxn],n,m,max;void input(){ scanf("%d%d",&n,&m); max=0; for(int i=0;i<n;i++) { sca转载 2012-12-05 21:41:01 · 432 阅读 · 0 评论 -
例题6.1.1
卡片游戏#includeusing namespace std;#define MAX 100int n;int queue[MAX];//数组定义为2倍大小,否则读写非法内存 int begin;int end;void init(){ begin=0; for(int i=0;i<n;i++) { queue[i]=i+1; }原创 2012-11-16 00:38:23 · 272 阅读 · 0 评论 -
例题5.4.4
多少块土地#includeusing namespace std;int main(){int n;int V;int E;int F;while(cin>>n){ int sum1=0; for(int i=0;i<=n-2;i++) { sum1+=(i*(n-2-i)); } V=n+n*sum原创 2012-11-15 22:35:06 · 243 阅读 · 0 评论 -
例题5.4.3
果园里的树#include#includedouble doubleArea(double x0, double y0, double x1, double y1, double x2, double y2){ return fabs(x0*y1+x1*y2+x2*y0-x1*y0-x2*y1-x0*y2);} int main(){ double x0原创 2012-11-15 21:37:01 · 315 阅读 · 0 评论 -
例题3-2
蛇形填数//先下,到不能填为止,->左->上->右 ,依次循环 #include#includeconst int MAXN=10;int a[MAXN][MAXN];int n;int main(){ cin>>n; memset(a,0,sizeof(a)); int x=0, y=n-1; int total=a[x][y]=1;原创 2012-11-10 17:38:23 · 239 阅读 · 0 评论 -
例题3-3
竖式问题#include#include int main(){ int i, ok, abc, de, x, y, z, count=0; char s[20], buf[99]; scanf("%s",s); for(abc=111; abc<=999;abc++){ for(de=11;de<=99;de++){ x=abc*(de%10);原创 2012-11-10 20:26:39 · 265 阅读 · 0 评论 -
例题7.4.2
素数环#include#include#includeusing namespace std;const int MAXN=40;int isp[MAXN];int is_prime(int r){ int tmp=sqrt(r); for(int i=2;i<=tmp;i++){ if(r%i==0){ return 0; }原创 2012-11-26 13:54:46 · 269 阅读 · 0 评论 -
例题7.4.4
带宽#include#include#include#define maxn 100 + 10#define set0(a) memset(a, 0, sizeof(a))int g[maxn][maxn], n, ne[maxn], min, vis[maxn], ans[maxn], best[maxn];void dfs(int cur, int found){原创 2012-11-27 15:10:20 · 400 阅读 · 0 评论 -
例题7.4.3
困难的串#includeusing namespace std;const int MAXN=80;int n,L,cnt;int S[MAXN]={0};int dfs(int cur){ if(cnt++==n){ for(int i=0;i<cur;i++){ printf("%c",'A'+S[i]); } return 0;原创 2012-11-27 14:48:24 · 347 阅读 · 0 评论 -
例题3-4
最长回文串#include#define MAXN 5000+10char buffer[MAXN], s[MAXN];int p[MAXN];int main(){ int n, i, j, k; int max=0, m=0; int pos, x, y; cin.getline(buffer,MAXN); n=strlen(buffer);原创 2012-11-13 21:43:42 · 257 阅读 · 0 评论 -
例题5.2.1
小学生算术#includeint main(){ int a, b; while(scanf("%d%d",&a,&b)==2){ if(!a&&!b){ break; } int c=0, ans=0; for(int i=0;i<9;i++){ c=(a%10+b%10+c)>9?1:0; ans+=c; a/=1原创 2012-11-14 21:20:04 · 199 阅读 · 0 评论 -
例题5.3.1
6174问题#include#include#includeint num[2000], count;int Comp(const void* _a, const void* _b){ char* a=(char*)_a; char* b=(char*)_b; return strcmp(a,b);}int get_next(int x);原创 2012-11-14 23:41:05 · 327 阅读 · 0 评论 -
例题5.4.1
Cantor的数表#includeint main(){ int n; while(scanf("%d",&n)==1){ int s=0,k=1; while(true){ s+=k; if(s>=n){ printf("%d/%d\n",s-n+1,k-s+n); break; } k++; } }原创 2012-11-15 08:40:01 · 204 阅读 · 0 评论 -
例题5.2.2
阶乘的准确值#include#includeconst int maxn=3000;int f[maxn];int main(){ int i,j,n; scanf("%d",&n); memset(f,0,sizeof(f)); f[0]=1; for(i=2;i<n;i++){ int c=0; for(j=0;j<maxn;j++){原创 2012-11-14 21:55:12 · 211 阅读 · 0 评论 -
例题5.3.2
字母重排#include#include#includeint n;char word[2000][10], sorted[2000][10];//字符比较函数 int cmp_char(const void* _a, const void* _b){ char* a=(char*)_a; char* b=(char*)_b; return *a-*原创 2012-11-15 00:31:14 · 284 阅读 · 0 评论 -
例题5.4.2
因子和阶乘#include#includeint isPrime(int x){ for(int i=0;i*i<=x;i++){ if(x%i==0){ return 0; } } return 1;}int prime[100], count=0;int main(){ int n,p[100]; //构造一个原创 2012-11-15 20:14:26 · 229 阅读 · 0 评论 -
例题7.4.1
八皇后问题#include#includeusing namespace std;const int MAXN=100;int x[MAXN];int n,sum=0;int place(int k){ for(int j=0;j<k;j++){ if(abs(k-j)==abs(x[j]-x[k])||(x[j]==x[k])){ ret原创 2012-11-24 09:38:47 · 299 阅读 · 0 评论