1. 程式人生 > >考研上機水題整理——浙大2006

考研上機水題整理——浙大2006

map stack esp logs 經典的 fff 字符 return n)

題目1019:簡單計算器

棧的比較經典的運用,記得用棧,隊列和容器的時候,要清空,其次就是用棧的基本套路,取值,彈出,推入,輸出

 1 #include<stdio.h>
 2 #include<stack>
 3 using namespace std;
 4  
 5 int main()
 6 {
 7     int a,b;
 8     char c,d;
 9     stack <double> s;
10     while(~scanf("%d ",&a)&&a)
11     {
12         while(!s.empty())
13 s.pop(); 14 s.push(a); 15 while(~scanf("%c %d%c",&c,&b,&d)) 16 { 17 if(c==+) 18 s.push(b); 19 else if(c==-) 20 s.push(-b*1.0); 21 else if(c==*) 22 { 23 double
tmp=s.top(); 24 //printf("%lf\n",tmp); 25 s.pop(); 26 s.push(tmp*b); 27 } 28 else if(c==/) 29 { 30 double tmp=s.top(); 31 //printf("%lf\n",tmp); 32 s.pop(); 33 s.push(tmp/b);
34 } 35 if(d!= ) 36 break; 37 } 38 // double ans=0; 39 while(!s.empty()) 40 { 41 if(s.size()==1) 42 { 43 printf("%.2lf\n",s.top()); 44 break; 45 } 46 double tmp1=s.top(); 47 //printf("%lf\n",tmp1); 48 s.pop(); 49 double tmp2=s.top(); 50 s.pop(); 51 s.push(tmp1+tmp2); 52 } 53 //printf("%.2lf\n",ans); 54 55 56 } 57 return 0; 58 } 59

題目1018:統計同成績學生人數

哈希數組的應用

題目1017:還是通暢工程

最小生成樹不過比並查集多了一個結構體和排序

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<stdio.h>
 4 #include<string.h>
 5 #include<math.h>
 6 #include<queue>
 7 #define LL long long
 8 #define PI acos(-1)
 9 #define exp 1e-9
10 #define INF 0x7fffffff
11 using namespace std;
12 priority_queue <int, vector<int>, greater<int> > Q;
13 int tree[110];
14 struct node
15 {
16     int x,y,cost;
17     friend bool operator < (node a, node b)
18     {
19         return a.cost<b.cost;
20     }
21 }list[10000];
22 int findRoot(int x)
23 {
24     if(tree[x]==-1)
25         return x;
26     else
27     {
28         int tmp=findRoot(tree[x]);
29         tree[x]=tmp;
30         return tmp;
31     }
32 }
33  
34 int main()
35 {
36     int n;
37     while(~scanf("%d",&n)&&n)
38     {
39         int m=(n-1)*n/2;
40         for(int i=0; i<m; i++)
41         {
42             scanf("%d %d %d",&list[i].x,&list[i].y,&list[i].cost);
43         }
44         sort(list,list+m);
45         for(int i=1; i<=n; i++)
46             tree[i]=-1;
47         int ans=0;
48         for(int i=0; i<m; i++)
49         {
50             int a=findRoot(list[i].x);
51             int b=findRoot(list[i].y);
52             if(a!=b)
53             {
54                 tree[a]=b;
55                 ans+=list[i].cost;
56             }
57         }
58         printf("%d\n",ans);
59     }
60     return 0;
61 }

題目1016:火星A+B

題目思路很簡單,一個素數篩,一個字符串轉化為數組並進行模的過程

題目1015:還是A+B

其實就是不斷取最後一位的過程

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<stdio.h>
 4 #include<string.h>
 5 #include<math.h>
 6 #include<queue>
 7 #include<set>
 8 #include<map>
 9 #define LL long long
10 #define PI acos(-1)
11 #define exp 1e-9
12 using namespace std;
13 priority_queue <int, vector<int>, greater<int> > Q;
14  
15  
16 int main()
17 {
18     int a,b,k;
19     int a1,b1;
20     while(~scanf("%d %d %d",&a,&b,&k))
21     {
22         if(a==0&&b==0)
23             break;
24         int i;
25         int ans=a+b;
26         for(i=0; i<k; i++)
27         {
28             a1=a%10;
29             b1=b%10;
30             if(a1!=b1)
31                 break;
32             a/=10;
33             b/=10;
34         }
35         if(i==k)
36             printf("-1\n");
37         else
38             printf("%d\n",ans);
39     }
40     return 0;
41  }

考研上機水題整理——浙大2006