북 리 재시험 문제 2011 년
5477 단어 북경이공대학 데이터 구조 889
사고 출처: 참고
#include
#include
여기 서 나 는 stl 함 수 를 사용 하지 않 았 기 때문에 비교적 번 거 롭 지만 생각 은 같다. 다음 과 같다.
#include
#include
#include
using namespace std;
/*
1. ( ), , , :“ , ”
*/
typedef struct res{
string letter;
int count;
}result;
bool ishas(vector vb, string s){
for(int i=0;i& vd, string s){
for(int i=0;i vc;
vector vb;
vector vd;
cout<>str){
if(str=="#")
break;
vc.push_back(str);
}
//
sort(vc.begin(), vc.end());
// for(int i=0;iletter = vb[i].substr(0,1);
r->count = 1;
vd.push_back(*r);
}
}
//
for(int i=0;i
2. 단 어 를 입력 하고 (대소 문자 구분) 사전 정렬 을 출력 합 니 다.
#include
#include
#include
using namespace std;
/*
,( ),
*/
int main()
{
string str;
vector vc;
cout<>str){
if(str=="#")
break;
vc.push_back(str);
}
//
sort(vc.begin(), vc.end());
for(int i=0;i
3. 하나의 문자열 (aaaa (bbbb (cccc, ddd), eeee (ffff)) 에 게 이 문자열 은 각자 의 차원 관 계 를 나타 낸다. 예 를 들 어 aaaa 는 bbbb 와 eeee 의 지도자 이 고 bbbb 는 cccc 와 ddd 의 지도자 가 현재 이름 을 입력 한다. 예 를 들 어 ffff 는 리더 십 출력 을 요구한다. aaaa > eeee > ffff
#include
#include
#include
using namespace std;
/*
3. (aaaa(bbbb(cccc,dddd),eeee(ffff)))
aaaa bbbb eeee ,bbbb cccc dddd
, ffff,
:aaaa>eeee>ffff
*/
int main()
{
string str1, str2, str="";
vector vc;
cout<>str1;
cout<>str2;
char stack[20];
int top=0;
int pos = str1.find(str2);
cout<=0;i--){// , , , ,
/*
//(aaaa(bbbb(cccc,dddd),eeee(ffff)))
//top 3 2 1 0 1
ffff
top==1 && '(' , , : eeee> , eeee>ffff
top==2 && '(' , , : aaaa>, aaaa>eeee>ffff
top==3 , , ,
:
eeee
//(aaaa(bbbb(cccc,dddd),eeee(ffff)))
//top 2 1 0 1
top==1 && '(' , , : aaaa> , aaaa>ffff
top==2
*/
if(str1[i]==')'){
top--;
cout<");
index = i;
}
}
cout<
또 하나의 해법 이 있 습 니 다. 여 기 는 아직 보지 못 했 습 니 다.
#include
#include
using namespace std;
int main()
{
//(aaaa(bbbb(cccc,dddd),eeee(ffff)))
int n=0;
string s,str[105],t;//str
cin>>s>>t;
for(int i=0; i=0; k--)
{
if(str[k]!="(")
n--;
else if(str[k]=="(")
{
break;
}
}
}
else if(s[i]==')')//
{
for(int k=n-1; k>=0; k--)
{
if(str[k]!="(")
n--;
else if(str[k]=="(")
{
n--;
break;
}
}
}
else//
{
int j;
string tt="";
for(j=i; j='a'&&s[j]<='z')||(s[j]>='A'&&s[j]<='Z'))
tt+=s[j];
else
{
str[n++]=tt;
break;
}
}
if(tt==t)//
break;
i=j-1;
}
}
for(int i=0; i";
else
cout<
저자: 끝 없 는 명월
전편: 북 리 재시험 문제 2010 년