26.27日
Posted johnfllora
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了26.27日相关的知识,希望对你有一定的参考价值。
1 ElementType Find( List l, int m ) 2 { 3 List start=l,end=l; 4 while(m--) 5 { 6 if(end==NULL)return ERROR; 7 end=end->Next; 8 } 9 while(end!=NULL) 10 { 11 start=start->Next; 12 end=end->Next; 13 } 14 return start->Data; 15 }
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 using namespace std; 5 int bz=0; 6 void preonder(int *pos,int *in,int n1) 7 { 8 if(n1>0) 9 { 10 cout<<" "<<pos[n1-1]; 11 int tmp=pos[n1-1]; 12 int num=-1; 13 for(int i=0;i<n1;i++) 14 { 15 if(in[i]==tmp) 16 { 17 num=i; 18 break; 19 } 20 } 21 preonder(pos,in,num); 22 preonder(pos+num,in+num+1,n1-num-1); 23 } 24 } 25 26 int main() 27 { 28 int t; 29 int mid[314],later[314]; 30 scanf("%d ",&t); 31 for(int i=0;i<t;i++) 32 scanf("%d",later+i); 33 for(int i=0;i<t;i++) 34 scanf("%d",mid+i); 35 cout<<"Preorder:"; 36 preonder(later,mid,t); 37 }
假设以S
和X
分别表示入栈和出栈操作。如果根据一个仅由S
和X
构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S
和X
序列,判断该序列是否合法。
输入格式:
输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤)是堆栈的最大容量。随后N行,每行中给出一个仅由S
和X
构成的序列。序列保证不为空,且长度不超过100。
输出格式:
对每个序列,在一行中输出YES
如果该序列是合法的堆栈操作序列,或NO
如果不是。
一开始还认真的想用堆栈,转头一想,没必要,简单简单。
1 #include<string.h> 2 #include<stdio.h> 3 char s[101]; 4 int main() 5 { 6 int p,t,q; 7 int i,j; 8 scanf("%d%d",&i,&j); 9 getchar(); 10 while(i--) 11 { 12 p=0; 13 gets(s); 14 t=strlen(s); 15 for(q=0;q<t;q++) 16 { 17 if(s[q]==‘S‘)p++; 18 if(s[q]==‘X‘)p--; 19 if(p<0||p>j)break; 20 } 21 if(p==0)printf("YES "); 22 else printf("NO "); 23 } 24 }
借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。
输入格式:
输入为一个正整数N,即起始柱上的盘数。
输出格式:
每个操作(移动)占一行,按柱1 -> 柱2
的格式输出。
汉诺塔的非递归形式被我用递归形式给做出来了!!!
1 #include <stdio.h> 2 #include <stdlib.h> 3 void shuchu(char A, char C) 4 { 5 printf("%c -> %c ",A,C); 6 } 7 void hn(int n,char A,char B,char C) 8 { 9 if(n==1) 10 { 11 shuchu(A,C); 12 } 13 else 14 { 15 hn(n-1,A,C,B); 16 shuchu(A,C); 17 hn(n-1,B,A,C); 18 } 19 } 20 int main() 21 { 22 int n; 23 scanf("%d",&n); 24 char A=‘a‘,B=‘b‘,C=‘c‘; 25 hn(n,A,B,C); 26 return 0; 27 }
Description
Bessie has gone to the mall‘s jewelry store and spies a charm bracelet. Of course, she‘d like to fill it with the best charms possible from the N (1 ≤ N ≤ 3,402) available charms. Each charm i in the supplied list has a weight Wi (1 ≤ Wi ≤ 400), a ‘desirability‘ factor Di (1 ≤ Di ≤ 100), and can be used at most once. Bessie can only support a charm bracelet whose weight is no more than M (1 ≤ M ≤ 12,880).
Given that weight limit as a constraint and a list of the charms with their weights and desirability rating, deduce the maximum possible sum of ratings.
有N(1 ≤ N ≤ 3,402) 件物品和一个容量为V的背包。第i件物品的重量是w[i](1 ≤ Wi ≤ 400),价值是d[i](1 ≤ Di ≤ 100)。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量M(1 ≤ M ≤ 12,880),且价值总和最大。
我最喜欢的简单的01背包问题
1 #include<string.h> 2 #include<stdio.h> 3 int we[12881]; 4 int v[3403]; 5 int w[3403]; 6 int main() 7 { 8 int i,j; 9 while(~scanf("%d%d",&i,&j)) 10 { 11 int t=0; 12 while(t<i) 13 { 14 scanf("%d%d",w+t,v+t); 15 t++; 16 } 17 for(t=0;t<i;t++) 18 for(int l=j;l>=w[t];l--) 19 if(we[l-w[t]]+v[t]>we[l])we[l]=we[l-w[t]]+v[t]; 20 printf("%d ",we[j]); 21 22 } 23 }
现在我们有N个种类的食物,它们有不同的售价和能量. 但是Sunny手上的钱是有限的。在这个弱肉强食的世界,Sunny想要变强,因此需要能量升级,才能在这个世界上生存,为了让Sunny能够干掉更多等级低下的Boss,聪明的你帮帮Sunny怎样去获取能量?
还是俺最爱的01背包,感觉就是西邮的题目copy过来,
1 #include<string.h> 2 #include<stdio.h> 3 int we[12881]; 4 int v[3403]; 5 int w[3403]; 6 int main() 7 { 8 int time; 9 scanf("%d",&time); 10 while(time--) 11 { 12 memset(we,0,sizeof(we)); 13 int i,j,t; 14 scanf("%d%d",&i,&j); 15 t=0; 16 while(t<i) 17 { 18 scanf("%d",v+t); 19 t++; 20 } 21 t=0; 22 while(t<i) 23 { 24 scanf("%d",w+t); 25 t++; 26 } 27 for(t=0;t<i;t++) 28 for(int l=j;l>=w[t];l--) 29 if(we[l-w[t]]+v[t]>we[l])we[l]=we[l-w[t]]+v[t]; 30 printf("%d ",we[j]); 31 32 } 33 }
Input第一行给出了一个整数T, 表示有T组测试数据. 对于每一组数据,第一行给出了一个浮点数P, 表示POIUYTREWQ允许被抓的最大概率, 和一个整数N,表示他计划去抢劫的N个银行. 接下来N行, 每行给出一个整数数Mj和浮点数Pj.
抢劫银行 j 可获得 Mj 百万美金, 被抓的概率是 Pj .Output对于每组数据,每行输出一个整数,表示POIUYTREWQ在被抓概率小于P的情况下,可抢到的最多的金钱。
Notes and Constraints
0 < T <= 100
0.0 <= P <= 1.0
0 < N <= 100
0 < Mj <= 100
0.0 <= Pj <= 1.0
你可以认为每家银行都是独立的。Sample Input
3 0.04 3 1 0.02 2 0.03 3 0.05 0.06 3 2 0.03 2 0.03 3 0.05 0.10 3 1 0.03 2 0.02 3 0.05
Sample Output
2 4 6
1 #include<cmath> 2 #include<cstring> 3 #include "stdio.h" 4 #include "iostream" 5 using namespace std; 6 double s[10001]; 7 int va[10001]; 8 double we[10001]; 9 int main() 10 { 11 int time; 12 scanf("%d",&time); 13 while(time--) 14 { 15 double wei; 16 int ti; 17 int sum=0; 18 scanf("%lf%d",&wei,&ti); 19 memset(s,0,sizeof(s)); 20 memset(va,0,sizeof(va)); 21 memset(we,0,sizeof(we)); 22 for(int i=1;i<=ti;i++) 24 scanf("%d%lf",va+i,we+i); 25 for(int i=1;i<=ti;i++) 26 sum+=va[i]; 28 s[0]=1; 29 for(int i=1;i<=ti;i++) 30 { 31 for(int j=sum;j>=va[i];j--) 32 s[j]=max(s[j],s[j-va[i]]*(1.0-we[i])); 33 } 34 for(int i=sum;i>=0;i--) 35 { 36 if(wei>(1-s[i])) 37 { 38 printf("%d ",i); 39 break; 40 } } 46 } 47 }
以上是关于26.27日的主要内容,如果未能解决你的问题,请参考以下文章
Nsdateformatter日返回我在选择手机的语言。它可以返回我只有英语所有的时间?