nyoj
浮屠血华
这个作者很懒,什么都没留下…
展开
-
nyoj 243 交换输出
找到最小值 与第一位交换后输出 #include int main() { int a[100]; int n,i,min,q,t; while(scanf("%d",&n)&&n!=0) { q=0;//为后文下标做交换 for(i=0;i { scanf("%d",&a[i]); } min=a[0]; for(i=0;i { if(min>a[i]) {原创 2016-07-10 09:43:32 · 239 阅读 · 0 评论 -
nyoj 71 独木舟上的旅行
#include #include int cmp(const void*a,const void*b) { return *(int*)b-*(int*)a; } int main() { int a[300]; int s,i,j; scanf("%d",&s); while(s--) { int w,n; int count=0; scanf("%d%d",&原创 2016-07-14 10:28:55 · 209 阅读 · 0 评论 -
nyoj 106 背包问题
#include #include struct tx { int v; int w; }; int comp(const void*a,const void*b) { return (*(tx*)b).v>(*(tx*)a).v?1:-1; } int main() { tx a[11]; int n,sw,sv; int i,j,t; scanf("%d",&原创 2016-07-15 10:53:42 · 205 阅读 · 0 评论 -
八皇后 问题 回溯算法
#include int tot; int n; int c[110]; void serch(int h) { if(h==n) tot++;//递归的边界 else { for(int i=0;i<n;i++) { int ok=1; c[h]=i;//将第h行的皇后放在i列 for(int j=0;j<h;j++) { if(c[h]==c[原创 2016-07-26 19:39:29 · 239 阅读 · 0 评论 -
nyoj 14 会场安排问题
本体是经典的贪心算法问题按结束时间由小到大排序第一个区间是一定要选的之后 需要把所有和区间1相交的区间排除在外 并记录上一个被选的区间编号这样 排序后只需扫描一次就可以得到正确结果#include #include struct tme { int st; int ed; }; int cmp(const void*a,const void*b) { return (*(tme*)a).ed原创 2016-07-16 10:14:24 · 190 阅读 · 0 评论 -
深搜解决迷宫问题
#include int book[51][51]; int a[51][51]; int m,n,i,j,p,q; int min=99999; void dfs(int x,int y,int step) { //判断的是否达到目标位置 if(x==p&&y==q) { //更新最小值 if(step<min) min=step; return ; } int原创 2016-07-27 09:35:33 · 661 阅读 · 0 评论 -
数独问题的方法
#include #include int map[9][9]; bool row[9][10]; bool col[9][10]; bool block[3][3][10]; //三位数组 前两位为数组的坐标 最后一位为数组的内容 bool flag; void DFS(int x)//填入81个数由零开始 { if(flag) return;//减少不必要的判断 进行时原创 2016-07-27 17:10:05 · 282 阅读 · 0 评论 -
nyoj 914 yougth最大值 二分 贪心
#include #include #define N 10010 using namespace std; double cmp(double a,double b) { return a>b; } double w[N],v[N],c[N]; int main() { int n,k; while(scanf("%d%d",&n,&k)!=EOF) { int i; dou转载 2016-07-18 11:37:58 · 254 阅读 · 0 评论 -
nyoj 58 最小步数问题 BFS
#include struct note { int x; int y; int s; }; int main() { struct note que[82]; int a[9][9]={ 1,1,1,1,1,1,1,1,1, 1,0,0,1,0,0,1,0,1, 1,0,0,1,1,0,0,0,1,原创 2016-07-28 18:21:50 · 320 阅读 · 0 评论 -
nyoj 35 表达式求值
#include #include #include #include using namespace std; char s[1010]; stack numb;//定义数据栈 stack fh;//符号栈 int main() { int n; scanf("%d",&n); while(n--) { scanf("%s",&s[1]); int len=strlen(&s[1转载 2016-07-18 17:26:06 · 209 阅读 · 0 评论 -
nyoj 2 括号配对 栈
#include #include #include using namespace std; char a; int main() { int n; scanf("%d",&n); getchar(); while(n--) { stack fh;//定义栈 while(scanf("%c",&a)&&a!='\n') { if(fh.empty())如果栈为空原创 2016-07-18 21:27:09 · 248 阅读 · 0 评论 -
nyoj 305 表达式求值 (栈实现)
#include #include using namespace std; #include int main() { int n; scanf("%d",&n); while(n--) { char g[310]; stack f; stack num; scanf("%s",g); int len=strlen(g); for(int i=0;i<len;i原创 2016-07-19 10:52:54 · 291 阅读 · 0 评论 -
nyoj 755 山谷
#include #include using namespace std; stack j; int main() { int n,hi; while(scanf("%d",&n)!=EOF) { int t=0; int count=0; while(n--) { scanf("%d",&hi); if(j.empty()) { j.push(原创 2016-07-21 09:28:37 · 309 阅读 · 0 评论 -
nyoj 苹果 01背包
#include #include int v,n; int f[1010]; int main() { while(scanf("%d%d",&n,&v),v+n) { int c,w; memset(f,0,sizeof(f)); for(int i=1;i<=n;i++) { scanf("%d%d",&c,&w); for(int j=v;j>=c;j--)原创 2016-08-04 17:38:56 · 261 阅读 · 0 评论 -
poj 2386 同 nyoj 27 dfs
#include int m,n; char a[105][105]; void dfs(int x,int y) { if(x=m||y=n) { return ; } if(a[x][y]=='W')//八个方向搜索 { a[x][y]='.'; dfs(x+1,y); dfs(x,y+1); dfs(x-1,y); dfs(x,y-1); dfs(x-原创 2016-08-02 21:09:48 · 261 阅读 · 0 评论 -
nyoj 6 喷水装置(一)
#include #include #include int comp(const void *p1,const void *p2) { double *a=(double*)p1; double *b=(double*)p2; return *a-*b>0?-1:1;//当为double类型排序时应特别注意 } int main() { double pen[610];原创 2016-07-13 20:25:26 · 205 阅读 · 0 评论 -
nyoj 8 一种排序
学会了使用qsort函数 来进行排序 http://baike.baidu.com/link?url=ui_gRpSGl5ZBO6SqQDeKnG_EBOnfS4ZH3XTNlBd826grBJzPp-SQisr0ITjopXIZXivhXUCZnpgjMXjPH1dFZK #include #include struct ch { int l; int w; int原创 2016-07-13 11:35:41 · 210 阅读 · 0 评论 -
nyoj 26 孪生素数问题
由于题目使用的数据过大 普通判断方法会超时 采用筛选法 #include #include bool temp[1000010]; int main() { int n,i,j; scanf("%d",&n); while(n--) { int count=0; int m; scanf("%d",&m); if(m>2) { temp[2]=true; }原创 2016-07-13 08:20:42 · 248 阅读 · 0 评论 -
nyoj 244 16进制简单运算
#include int main() { int t; scanf("%d",&t); while(t--) { int a,b; char c; scanf("%x%c%x",&a,&c,&b); if(c=='+') { printf("%o\n",a+b); } if(c=='-') { printf("%o\n",a-b); } } return 0原创 2016-07-10 10:28:27 · 453 阅读 · 0 评论 -
nyoj 255 c小加之随机数
对输入的数据进行去重和排序 #include int a[100],n; void quick(int l,int r) { int i,j,temp,t; if(l>r) return ; temp=a[l]; i=l; j=r; while(i!=j) { while(a[j]>=temp&&i { j--; } while(a[i] { i++; }原创 2016-07-10 11:31:09 · 257 阅读 · 0 评论 -
nyoj 260 数数小木块
找到规律 很简单 #include int main() { int n; scanf("%d",&n); while(n--) { int t,sum=0; int i,j; scanf("%d",&t); for(i=1;i { for(j=i;j>=1;j--) { sum+=j; } } printf("%d\n",sum); } return原创 2016-07-10 15:45:26 · 412 阅读 · 0 评论 -
nyoj 263 精挑细选
考察较为全面 #include int main() { int n,i; scanf("%d",&n); while(n--) { int m; int a,b,c,a1,b1,c1; scanf("%d",&m); scanf("%d%d%d",&a,&b,&c); for(i=0;i { scanf("%d%d%d",&a1,&b1,&c1); if((a1>a原创 2016-07-10 17:09:54 · 417 阅读 · 0 评论 -
nyoj 264 国王的魔镜
镜子的反射 因此需要对称的看 #include #include int main() { int n; scanf("%d",&n); while(n--) { int l,i,f=0; char a[100]; scanf("%s",&a); l=strlen(a); while(l%2==0)//根据奇偶性做判断 直到为奇数跳出循环 { for(i=0;i {原创 2016-07-10 19:13:14 · 304 阅读 · 0 评论 -
nyoj 268 荷兰国旗问题
很水的一道题 但因为自己的粗心 错了一次 以此为戒 #include int main() { int n,i; scanf("%d",&n); while(n--) { int r=0,w=0,b=0; char a[1000]; scanf("%s",a); for(i=0;a[i]!='\0';i++) { if(a[i]=='R') r++; if(a[i]=原创 2016-07-10 20:13:37 · 312 阅读 · 0 评论 -
nyoj 275 队花的烦恼一
数组开的不够大 #include int main() { int n,i,q,a[10000]; while(scanf("%d",&n)!=EOF) { i=0; if(n==0) printf("0"); while(n!=0) { a[i++]=n%2; n/=2; } q=i; for(i=q-1;i>=0;i--) { printf("%d",a[原创 2016-07-10 20:48:27 · 317 阅读 · 0 评论 -
nyoj 276 比较字母大小
#include int main() { int t; scanf("%d",&t); while(t--) { char a,b; getchar();//字符注意回车与空格 scanf("%c %c",&a,&b); if(a==b) { printf("%c=%c\n",a,b); } if(a { printf("%c>%c\n",a,b); } if原创 2016-07-10 21:12:25 · 262 阅读 · 0 评论 -
nyoj 277 车牌号
考察字符串数组的应用 #include #include int main() { int n,m,i; scanf("%d",&n); while(n--) { char a[6],s[6]; scanf("%d",&m); scanf("%s",a); strcpy(s,a); for(i=1;i { scanf("%s",a); if(strcmp(a,原创 2016-07-11 10:00:32 · 363 阅读 · 0 评论 -
nyoj 283 对称排序
先排序 再对称 #include #include int main() { int n,i,j,m=0; char a[15][26],temp[26]; scanf("%d",&n); while(n) { for(i=0;i scanf("\n%s",a[i]); for(i=0;i for(j=0;j if(strlen(a[j])>strlen(a[j+1])原创 2016-07-11 11:43:45 · 209 阅读 · 0 评论 -
大数加法
大数问题 使用字符数组 模拟竖式运算方法 进行运算 #include #include int main() { int n,i,l,la,lb,k; char a[201],b[201]; int af[201]={0},bf[201]={0},c[201]={0}; scanf("%d",&n); while(n--) { scanf("%s%s",a,b); la=原创 2016-07-12 11:05:32 · 184 阅读 · 0 评论 -
nyoj 655
#include #include int main() { int t,i,j; int fib[205][205]; fib[0][204]=1; fib[1][204]=1; for(i=2;i { for(j=204;j>=0;j--) { fib[i][j] += (fib[i-1][j]+fib[i-2][j]) % 10;原创 2016-07-12 15:49:08 · 207 阅读 · 0 评论 -
nyoj 28 大数阶乘
#include int main() { int m,i,j,k,flag; int a[6001],b[16000];//最终存放结果的数组一定要开的大一点; scanf("%d",&m); for(i=0;i { a[i]=i; } b[1]=1; k=1; for(i=1;i { flag=0; for(j=1;j { b[j]=b[j]*a[i]; }原创 2016-07-12 16:54:41 · 186 阅读 · 0 评论 -
nyoj 458 小光棍数
#include #include int main() { char m[100]; int a[100]; int n,i,k; scanf("%d",&n); while(n--) { k=0; scanf("%s",&m); int len=strlen(m); for(i=0;m[i]!='\0';i++) { a[i]=m[i]-'0'; } for(原创 2016-07-12 19:40:25 · 366 阅读 · 0 评论 -
nyoj 17 最长子序列相关问题
#include #include int main() { int T,count; char a[10000],dp[30]; scanf("%d",&T); while(T--) { count=0; memset(dp,0,sizeof(dp)); scanf("%s",a); int len=strlen(a); for(int i=0;i<len;i++原创 2016-08-06 21:04:07 · 295 阅读 · 0 评论