10815 - Andy's First Dictionary未通过

收获:

set做存储结构(平衡二叉树),需要调用#include <set>

set<string>::iterator,insert;




//程序有问题! //思路:折半查找,插入 //收获:set做存储结构(平衡二叉树),set<string>::iterator,insert; //string::empty(),string重定义后的+号运算 #include <stdio.h> #include <string.h> #include <ctype.h> #define wMax 50 char words[5010][wMax]; int num; void insert(char word[]) { int left,right; left=0; right=num; while(left<right) { int mid=(left+right)/2; if(strcmp(words[mid],word)<0) left=mid+1; else if(strcmp(words[mid],word)>0) right=mid-1; else return; } if(left>right)//第一种情况处理 { num++; strcpy(words[0],word); return ; } if(0==strcmp(words[left],word)) return; if(strcmp(words[left],word)<0) left++; for(int i=num;i>=left;i--) strcpy(words[i+1],words[i]); strcpy(words[left],word); num++; } int main() { //freopen("data.in","r",stdin); //freopen("data.out","w",stdout); char line[500],word[wMax]; num=-1; while(gets(line)) { int len=strlen(line); int j=0; memset(word,0,sizeof(word)); for(int i=0;i<len;i++) { if(isalpha(line[i])) word[j++]=tolower(line[i]); else { if(word[0]) insert(word); j=0; memset(word,0,sizeof(word)); } } if(word[0]) insert(word); } for(int i=0;i<=num;i++) printf("%s\n",words[i]); } /*通过 #include <iostream> #include <set> #include <cctype> #include <cstdio> #include <string> using namespace std; int main() { string line; char ch; while((ch=getchar())!=EOF) { line+=tolower(ch); } set<string>dic; for(int i=0;i<line.size();i++) { string word; while(i<line.size() && isalpha(line[i])) {word+=line[i];i++;} if(!word.empty()) dic.insert(word); } for(set<string>::iterator i=dic.begin();i!=dic.end();i++) cout<<*i<<endl; return 0; } */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值