![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
浙大pat
文章平均质量分 57
Sup_Heaven
这个作者很懒,什么都没留下…
展开
-
浙大PAT 1068题 1068. Find More Coins
动态规划,用dp[i][j]记录当使用前i个硬币时是否可以达到价值j,可以则为1,反之为0;用pre[i][j]记录当前第i个硬币是否在状态dp[i][j]中使用,是则为1,反之为0;最后在寻找解时,如果pre[i][j]为1,则记录到ans(便于一起输出),反之则不断i--,则到pre[i][j]为1。#include#includeint cmp(const void* ta,原创 2014-02-28 14:04:15 · 3678 阅读 · 4 评论 -
浙大PAT 1035题 1035. Password
#include#include#includeint main(){ int i,j,n; char name[1002][12],pwd[1002][12]; char ansname[1002][12],anspwd[1002][12]; int cnt=0,mark; scanf("%d",&n); for(i=0;i原创 2014-02-09 12:07:22 · 1550 阅读 · 1 评论 -
浙大PAT 1064题 1064. Complete Binary Search Tree
#include#include#includeusing namespace std;typedef struct TNode{ int value; struct TNode* left; struct TNode* right; }Node;int num[1008];int cmp(const void *atmp,const void *btmp)原创 2014-02-10 09:48:14 · 1020 阅读 · 0 评论 -
浙大PAT 1062题 1062. Talent and Virtue
#include#include#includetypedef struct Person{ char id[10]; int virtue; int talent;}person;//数组较大,开在main函数里面会出错; person ps[100005];person p1[100005];person p2[100005];原创 2014-02-10 09:41:14 · 1346 阅读 · 0 评论 -
浙大PAT 1058题 1058. A+B in Hogwarts
#include#includeint main(){ int a,b,c,d,e,f,h,i,j; scanf("%d.%d.%d ",&a,&b,&c); scanf("%d.%d.%d",&d,&e,&f); h=i=j=0; j=(c+f)%29; i=((c+f)/29+b+e)%17; h=((c+f)/29+b+e)/17+a+d; print原创 2014-02-10 09:30:30 · 856 阅读 · 0 评论 -
浙大PAT 1037题 1037. Magic Coupon
#include#includeint coup[100005],prod[100005];int cmp(const void* ta,const void* tb ){ int *a=(int*)ta; int *b=(int*)tb; return *a-*b;}int main(){ int i,j,nc,np; sca原创 2014-02-09 12:19:21 · 880 阅读 · 0 评论 -
浙大PAT 1032题 1032. Sharing
/*notice that num[a]=b and num[a]=c won't happen;*/#includeint num[100000],flag[100000];int main(){ int i,j,n; int sa,sb; scanf("%d %d %d",&sa,&sb,&n); int ta,tb; char tc; for(i=原创 2014-02-09 12:01:27 · 942 阅读 · 0 评论 -
浙大PAT 1063题 1063. Set Similarity
#include#include#includeusing namespace std;int main(){ int n,m,k,i,j; int tmp,s1,s2; setmyset[50]; set::iterator it1,it2; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&m); f原创 2014-02-10 09:43:53 · 1167 阅读 · 0 评论 -
浙大PAT 1043题 1043. Is It a Binary Search Tree
这题很久之前敲过一次,现在话一1个小时又敲了一次,感觉还是这次的代码简洁优美。之前的代码:#include#includetypedef struct Node{ int value; struct Node* left; struct Node* right;}Node;int num[1008];int flag;void BuildBST(N原创 2014-02-10 09:18:03 · 781 阅读 · 0 评论 -
浙大PAT 1041题 1041. Be Unique
水题#includeint rcd[10008];int num[100008];int main(){ int i,j,n; for(i=0;i<=10000;i++){ rcd[i]=0; } scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&num[i]); rcd[num[i]]++; } for(i=0;i<n原创 2012-12-30 15:03:00 · 1811 阅读 · 0 评论 -
浙大PAT 1033题 1033. To Fill or Not to Fill
/*用贪心算法:贪心思路如下:首先对输入数据按距离升序排序,从A站点开始,记加满油后最大行驶距离为max, 从A站点到A+max距离内搜索:1. 若搜索到第一个油价小于A的站点,则在A加油量为刚好保证能从A走到该站点。2. 若没有1里面的站点但是有终点,则A加油量为刚好保证能从A走到该终点。3. 若不是1,2情况但是此范围内有别的加油站,则在A加满油走到那些站点中油价最低的一个原创 2014-02-09 12:04:55 · 2586 阅读 · 1 评论 -
浙大PAT 1061题 1061. Dating
#include#include#include#includeusing namespace std;int main(){ int i,j; string stra,strb,strc,strd; cin>>stra>>strb>>strc>>strd; for(i=0;stra[i]!='\0'&&strb[i]!='\0';i++){原创 2014-02-10 09:39:05 · 1825 阅读 · 0 评论 -
浙大PAT 1053题 1053. Path of Equal Weight
/*关键是要想到:不要在过程中考虑排序,好的做法是先将每次的结果保存在字符串中,最后排序输出。 */#include#include#include#define maxn 108int wgt[maxn],map[maxn][maxn],vst[maxn],res[maxn];char ans[maxn][2*maxn];int n,m,s,cnt;v原创 2014-02-10 09:28:53 · 1115 阅读 · 0 评论 -
浙大PAT 1040题 1040. Longest Symmetric String
#include#includeint main(){ int i,j,k,maxs=0,cnt; char str[1008]; gets(str); int len=strlen(str); for(i=0;i<len;i++){ cnt=1; for(j=i-1,k=i+1;j>=0&&k<len;j--,k++){ if(str[j]==原创 2012-12-30 15:02:17 · 890 阅读 · 0 评论 -
浙大PAT 1042题 1042. Shuffling Machine
#include#includeint main(){ char map[55][5]={"Null","S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12","S13","H1","H2","H3","H4","H5","H6","H7","H8","H9","H10","H11","H12","H13",原创 2014-02-10 08:05:30 · 1448 阅读 · 0 评论 -
浙大PAT 1059题 1059. Prime Factors
#include#includelong int n;int IsPrimer(long n){ int i; for(i=2;i*i<=n;i++) if(n%i==0) return 0; return 1;}int main(){ scanf("%ld",&n); printf("%d=",n); if(n==1) printf("%ld\n原创 2014-02-10 09:37:32 · 1683 阅读 · 0 评论 -
浙大PAT 1013题 1013. Battle Over Cities
用BFS暴力过了,实质就是判断有几个联通子集,400ms的时限,我320ms本题练习了C++ STL的QUEUE#include#includeusing namespace std;int relat[1005][1005];int main(){ int i,j,k,N,M,K; int from,to,con; int vst[1005]; cin>>N>>M>>K;原创 2012-12-29 21:46:26 · 2883 阅读 · 0 评论 -
浙大PAT 1038题 1038. Recover the Smallest Number
快排飘过#include#include#includeint cmp(const void *m,const void *n){ char *a=(char *)m; char *b=(char *)n; char tmpa[20],tmpb[20]; strcpy(tmpa,a); strcpy(tmpb,b); strcat(tmpa,b); strca原创 2012-12-30 15:01:34 · 1584 阅读 · 0 评论 -
浙大PAT 1067题 1067. Sort with Swap(0,*)
该题的思路很容易想到,不过若不注重技巧会超时。若用数组v[]来容纳所有元素,该题目的目的就是通过最少的交换次数(注意只能必须是0与另一个数交换)来使得对于所有i均有v[i]== i,既然要求得最少交换次数,那就该尽量使每一次交换都能有一个元素被换到正确位置(且该元素不会再次被交换),下面分两种情况讨论:1. v[0] != 0: 说明0不在正确位置上,那要通过变换使转载 2014-02-27 14:32:25 · 3170 阅读 · 1 评论 -
浙大PAT 1051题 1051. Pop Sequence
设置一个变量tmp,由1开始自增。当栈顶元素与输入的元素不匹配时将当前tmp入栈并tmp自加,当匹配时栈顶出栈。#include#includeusing namespace std;int main(){ int i,j,M,N,K; int input,tmp,flag; scanf("%d %d %d",&M,&N,&K); for(i=0;i<K;i++){ flag原创 2014-02-26 21:22:10 · 2587 阅读 · 0 评论 -
浙大PAT 1046题 1046. Shortest Distance
题目由于数据量比较大,还是要想一下的,代码如下。#includeint arr[100005];int sum[100005];int main(){ int i,j,n,m; scanf("%d",&n); sum[0]=0; for(i=1;i<=n;i++){ scanf("%d",&arr[i]); sum[i]=sum[i-1]+arr[i]; } scan原创 2014-02-25 21:31:06 · 864 阅读 · 0 评论 -
浙大PAT 1050题 1050. String Subtractio
#includechar s1[10005],s2[10005];int ascii[1005];int main(){ int i; for(i=0;i<1000;i++){ ascii[i]=0; } gets(s1); gets(s2); for(i=0;s2[i]!='\0';i++){ ascii[s2[i]]++; } for(i=0;s1[i]!='\0原创 2014-02-26 19:23:27 · 815 阅读 · 0 评论 -
浙大PAT 1048题 1048. Find Coins
#includeint arr[1010];int main(){ int i,j,n,m,num; scanf("%d %d",&n,&m); for(i=0;i<=1000;i++){ arr[i]=0; } for(i=1;i<=n;i++){ scanf("%d",&num); arr[num]++; } for(i=1;i<=m;i++){ if(arr原创 2014-02-26 17:55:47 · 1370 阅读 · 0 评论 -
浙大PAT 1072题 1072. Gas Station
/*本题的题意开始没有理解,以为最优的第一条件就是平均值最小,但不是这样的。第一条件:所有候选点中到house最小值最大的那个候选点,第一个测试用例中G1的最小值为2,G2的最小值为1,G3的最小值为2,所以选取候选点G1和G3继续比较;4 2 4 33 1 3 45 3 2 4G12.0 3.3第二条件:平均值最小,第一个测试用例中,G1的平均值小于G3,所以最优解为G3;第原创 2014-02-24 20:26:34 · 3135 阅读 · 0 评论 -
浙大PAT 1071题 1071. Speech Patterns
/*模拟题,混用c和c++了,代码比较乱。ps:"alphanumercial" mean that f4 is a word.*/#include#include#include#includeusing namespace std;char str[1050000];char ctmp[1050000];mapmp;map::iterator it;int main(原创 2014-02-24 17:54:04 · 1370 阅读 · 0 评论 -
浙大PAT 1054题 1054. The Dominant Color
/*用C++读数据会超时,要用C读。*/#include#include#includeusing namespace std;int main(){ int i,j,n,m,num; mapmp; map::iterator it; cin>>n>>m; for(i=0;i<m;i++){ for(j=0;j<n;j++){ scanf("%d",&num);原创 2014-02-24 20:49:43 · 1591 阅读 · 0 评论 -
浙大PAT 1069题 1069. The Black Hole of Numbers
#include#includeint cmp1(const void* ta,const void* tb){ int* a=(int*)ta; int* b=(int*)tb; return *b-*a;}int cmp2(const void* ta,const void* tb){ int* a=(int*)ta; int* b=(int*)tb; retu原创 2014-02-24 17:52:32 · 2423 阅读 · 0 评论 -
浙大PAT 1070题 1070. Mooncake
#include#includetypedef struct NodeType{ float amount; float price; float profit;}Node;Node node[1005];int cmp(const void* ta,const void* tb){ Node* a=(Node*)ta; Node* b=(Node*)tb; return b原创 2014-02-23 18:53:54 · 979 阅读 · 0 评论 -
浙大PAT 1036题 1036. Boys vs Girls
#include#include#includestruct Stu{ char name[12]; char sex[2]; char id[12]; int grade;}stu,higF,lowM;int main(){ int i,j,n; higF.grade=-1;lowM.grade=101; scanf("%d",&n); for(i=0;原创 2012-12-29 21:51:17 · 1149 阅读 · 0 评论 -
浙大PAT 1031题 1031. Hello World for U
#include#includestruct Choice{ int x; int y; int yes;}cho[2];int main(){ int i,j,n,len; char str[90],rst[100][100]; int row,col; scanf("%s",str); len=strlen(str); cho[0].x=len/3; cho[0].原创 2012-12-29 21:50:39 · 994 阅读 · 0 评论 -
浙大PAT 1014题 1014. Waiting in Line
比较复杂的模拟题。#include#include#includeusing namespace std;typedef struct PNode{ int outhour,outminute;}Person;typedef struct WNode{ vector pv;}Window;int main(){ int i,j; int N,M,原创 2014-02-04 12:19:07 · 1093 阅读 · 0 评论 -
浙大PAT 1015题 1015. Reversible Primes
/*题目的意思是给定数10进制数N和进制D,将N转化成D进制,再将D进制的数反转,最后转化为10进制数M,判断N和M是否都是质素。*/#includeint isPrime(int n){ int i; if(n<2) return 0; for(i=2;i*i<=n;i++){ if(n%i==0) return 0; } return 1;}原创 2014-02-04 12:57:52 · 3144 阅读 · 0 评论 -
浙大PAT 1001题 1001. A+B Format
#includeint main(){ void func(int sum); int a,b,sum; scanf("%d %d",&a,&b); sum=a+b; if(sum<0){ printf("-"); sum=-sum; } func(sum); printf("n"); return 0; }void func(int s原创 2012-12-29 21:33:30 · 1428 阅读 · 1 评论 -
浙大PAT 1002题 1002. A+B for Polynomials
#include#includeint main(){ int i,n,m,Ni,cnt=0,mark[1008]; double ni,sum[1008]; for(i=0;i<1008;i++){ sum[i]=0; mark[i]=0; } scanf("%d",&n); for(i=0;i<n;i++){ scanf(" %d %lf"原创 2012-12-29 21:35:27 · 2596 阅读 · 0 评论 -
浙大PAT 1010题 1010. Radix
这题拿个20分左右还是比较简单地,拿满分花了很久,代码很丑。关键要考虑二分和溢出问题,还是贴一下代码。#include#include#includelong long rest; //判断sum和tmp小于0考虑了溢出情况 long long RETDEC(char str[],long long radix){ long long i,j=0; long原创 2014-02-02 14:15:08 · 965 阅读 · 0 评论 -
浙大PAT 1009题 1009. Product of Polynomials
#include#includetypedef struct{ int id; float num;}info[12];int main(){ int i,j,K1,K2,id,cnt=0; float rst[2005],num; info frst,scnd; for(i=0;i<=2000;i++){ rst[i]=0; } scanf("%d原创 2012-12-29 21:41:31 · 1831 阅读 · 0 评论 -
浙大PAT 1008题 1008. Elevator
#includeint main(){ int i,n,last=0,now,total=0; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&now); if(now>last){ total=(now-last)*6+5+total; last=now; } else if(now原创 2012-12-29 21:40:41 · 635 阅读 · 0 评论 -
浙大PAT 1007题 1007. Maximum Subsequence Sum
注意题目要求是输出首尾元素,而不是首尾元素的下标,自己纠结了好久才发现!#includeint main(){ int i,j,K,flag=0; int sub[10008]; int frst=10008,last,maxs=-1,sum=0; int temp=0; scanf("%d",&K); for(i=0;i<K;i++){ scanf("%d"原创 2012-12-29 21:39:58 · 1097 阅读 · 0 评论 -
浙大PAT 1006题 1006. Sign In and Sign Out
#include#includeint main(){ int i,j,k,n,len; char intime[10]={"23:59:59"},outtime[10]={"00:00:00"}; char rec1[20],rec2[20],rec3[20],fman[20],lman[20]; scanf("%d",&n); for(i=0;i<n;i++){原创 2012-12-29 21:38:49 · 1723 阅读 · 0 评论 -
浙大PAT 1005题 1005. Spell It Right
#includeint main(){ char str[110]; char dtoe[10][20]={"zero","one","two","three","four","five","six","seven","eight","nine"}; int i,sum=0; scanf("%s",str); for(i=0;str[i]!='';i++){ sum+原创 2012-12-29 21:37:47 · 2752 阅读 · 0 评论