華中科技大學(xué)計(jì)算機(jī)研究生機(jī)試題-2005,2006年
Posted on 2011-09-27 16:11 Uriel 閱讀(538) 評(píng)論(2) 編輯 收藏 引用 所屬分類(lèi): 考研&保研復(fù)試上機(jī)題還比較水。。但是罰時(shí)茫茫多。。。= =
1. 找位置
nt數(shù)組忘記初始化。。OLE*1。。。
PS: 2012.03.05 updated!! 沒(méi)有重復(fù)出現(xiàn)的字母不需要輸出!!
2. 最大的兩個(gè)數(shù)
看錯(cuò)題。。WA*4。。
//2005年華中科技大學(xué)計(jì)算機(jī)保研機(jī)試題 最大的兩個(gè)數(shù)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define INF 0x3f3f3f3f
int t[4][5], mx[5][2], pos[5][2];
int main() {
int i, j, cse, fg;
while(~scanf("%d", &cse)) {
while(cse--) {
for(i = 0; i < 5; ++i) {
mx[i][0] = mx[i][1] = -INF;
}
for(i = 0; i < 4; ++i) {
for(j = 0; j < 5; ++j) {
scanf("%d", &t[i][j]);
if(t[i][j] > mx[j][0]) {
mx[j][1] = mx[j][0];
mx[j][0] = t[i][j];
}
else if(t[i][j] > mx[j][1]) mx[j][1] = t[i][j];
}
}
for(i = 0; i < 5; ++i) {
for(j = 0; j < 4; ++j) {
if(t[j][i] == mx[i][0]) {
fg = 0;
pos[i][0] = j;
break;
}
else if(t[j][i] == mx[i][1]) {
fg = 1;
pos[i][0] = j;
break;
}
}
for(++j; j < 4; ++j) {
if(t[j][i] == mx[i][0] && fg) {
pos[i][1] = j;
break;
}
else if(t[j][i] == mx[i][1] && !fg) {
pos[i][1] = j;
break;
}
}
}
for(i = 0; i < 5; ++i) printf("%d ", t[pos[i][0]][i]);
puts("");
for(i = 0; i < 5; ++i) printf("%d ", t[pos[i][1]][i]);
puts("");
}
}
return 0;
}
/**************************************************************
Problem: 1200
User: Uriel
Language: C++
Result: Accepted
Time:20 ms
Memory:1012 kb
****************************************************************/
1. 找位置
nt數(shù)組忘記初始化。。OLE*1。。。
PS: 2012.03.05 updated!! 沒(méi)有重復(fù)出現(xiàn)的字母不需要輸出!!
//2005年華中科技大學(xué)計(jì)算機(jī)保研機(jī)試題 找位置
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int mk[400],fg[400][100], nt[400];
char s[200];
int main() {
int i, j;
while(gets(s) != NULL) {
memset(mk, 0, sizeof(mk));
memset(fg, -1, sizeof(fg));
memset(nt, 0, sizeof(nt));
for(i = 0; s[i]; ++i) {
if(mk[s[i]]) fg[s[i]][nt[s[i]]++] = i;
else {
mk[s[i]] = 1;
fg[s[i]][nt[s[i]]++] = i;
}
}
memset(mk, 0, sizeof(mk));
for(i = 0; s[i]; ++i) {
if(!mk[s[i]] && nt[s[i]] > 1) {
printf("%c:%d", s[i], fg[s[i]][0]);
for(j = 1; j < nt[s[i]]; ++j) printf(",%c:%d", s[i], fg[s[i]][j]);
puts("");
mk[s[i]] = 1;
}
}
}
return 0;
}
/**************************************************************
Problem: 1199
User: Uriel
Language: C++
Result: Accepted
Time:30 ms
Memory:1172 kb
****************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int mk[400],fg[400][100], nt[400];
char s[200];
int main() {
int i, j;
while(gets(s) != NULL) {
memset(mk, 0, sizeof(mk));
memset(fg, -1, sizeof(fg));
memset(nt, 0, sizeof(nt));
for(i = 0; s[i]; ++i) {
if(mk[s[i]]) fg[s[i]][nt[s[i]]++] = i;
else {
mk[s[i]] = 1;
fg[s[i]][nt[s[i]]++] = i;
}
}
memset(mk, 0, sizeof(mk));
for(i = 0; s[i]; ++i) {
if(!mk[s[i]] && nt[s[i]] > 1) {
printf("%c:%d", s[i], fg[s[i]][0]);
for(j = 1; j < nt[s[i]]; ++j) printf(",%c:%d", s[i], fg[s[i]][j]);
puts("");
mk[s[i]] = 1;
}
}
}
return 0;
}
/**************************************************************
Problem: 1199
User: Uriel
Language: C++
Result: Accepted
Time:30 ms
Memory:1172 kb
****************************************************************/
2. 最大的兩個(gè)數(shù)
看錯(cuò)題。。WA*4。。

































































3. 二叉排序樹(shù)
貌似有0的情況。。一開(kāi)始若結(jié)點(diǎn)數(shù)為0直接結(jié)束就TLE,改為結(jié)點(diǎn)數(shù)為0就輸出空行就AC































































































4. 排序
大水不解釋





























5. IP地址
大水不解釋























