输入输出错误
  • 板块学术版
  • 楼主FanofFuSu
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/17 16:13
  • 上次更新2024/7/17 17:51:23
查看原帖
输入输出错误
1004178
FanofFuSu楼主2024/7/17 16:13

这个算RE吧

Q1\mathrm Q_1 while语句的条件 貌似 有误,但是不会改.

Q2\mathrm Q_2 scanf输入 貌似 没有写入map ,但是不会改.

Q3\mathrm Q_3 vector,map 貌似 有点算法不完美 ,但是不会改.

Q4\mathrm Q_4 C++有没有arccos啊啊啊 取倒数也可以,但是我问一下.

功能就是将两篇文档的词语作为矢量,求出它们的夹角,计算相似性.

代码如下,此问题不对应任何洛谷计算题.

#include<bits/stdc++.h>
using namespace std;
char word[998];
vector<string> words;
map<string,int> doc1,doc2;
double mode1,mode2,cosv;
long long v;
double vv;
bool find(string s,vector<string> w){
	for(int i=0;i<w.size();i++)
		if(w[i]==s)return 1;
	return 0;
}
int main(){
	//doc1
	while(word=="##"){
		scanf("%s",word);
		if(!find(word,words))
			words.push_back(word);
		doc1[word]++;
	}
	//doc2
	while(word=="##"){
		scanf("%s",word);
		if(!find(word,words))
			words.push_back(word);
		doc2[word]++;
	}
	for(int i=0;i<words.size();i++){
		v+=doc1[words[i]]*doc2[words[i]],
		mode1+=doc1[words[i]]*doc1[words[i]],
		mode2+=doc2[words[i]]*doc2[words[i]];
	}
	mode1=sqrt(mode1),mode2=sqrt(mode2);
	cosv=v/(mode1*mode2);
	vv=1/v;
	printf("similarity is %lf %",vv);
	return 0;
}
2024/7/17 16:13
加载中...