C2第四次作业解题报告

本文解析了五道编程题目,包括多项式运算、选排列、求倍数、重复数全排列及矩阵乘法A等,提供了详细的解题思路与代码实现。

看过题解后如果觉得还算有用,请帮忙加点我所在团队博客访问量

http://www.cnblogs.com/newbe/

http://www.cnblogs.com/newbe/p/4069834.html

http://www.cnblogs.com/newbe/p/4072005.html

求赞求祝福啊!!!

http://www.cnblogs.com/newbe/p/4058097.html

软工老师太狠心,还请可怜一下同课不同命的我们吧~点一下文章末尾的推荐什么的呗,有个回复什么的就更好了!

1、多项式运算

没什么好说的,难点主要在读入部分,其实就是简单的模拟,可以使用sscanf来从字符串中格式化读入东西,每一项的种类有%dx%d";x%d;%dx;x;%d;注意判断下+-号什么的就ok了

2、选排列

老生常谈的题,n只有9,单纯的深搜即可,vis[]记录是否已经出现,res[]记录每一位分别是几,搜到底输出

3、求倍数

第四次相对有点技术含量的题,答案有500位,显然不能大数模板套暴力求解

其实从1<=N<=4999可以看出这是个构造题,就是用指定的digit构造出一个N的倍数的数

构造过程中会出现%N不为0的情况,那么假设某次构造出了一个数他%N为x != 0,那么从这个数继续向下构造时候,假设后位补的是y,那么产生的新的数%N = (x*10 + y)%N

那么可以看出我们可以通过用%N的余数限制时间复杂度,因为对于给定的余数为同一个x的不同的数,其向后继续构造的时候产生的数的余数序列是一样的,相当于做了重复的工作,那么我们只要保证下一个构造出的余数之前没有出现过即可顺利用广搜搞定此题

4、重复数全排列

开始以为是老生常谈的题,但是由于too young,字符串的长度小于100

贴一下超时代码..只能解决短排列

<span style="font-size:14px;">#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define clr0(x) memset(x,0,sizeof(x))
typedef long long LL;
int n,vis[1005];
char s[1005],ans[1005];
void dfs(int now){
	int i;
	if(now == n){
        ans[now] = '\0';
		puts(ans);
		return;
	}
	int pre=-1;

    for(i=0;i<n;++i)
    {
        if(!vis[i] && s[i]!=pre)
        {
            vis[i]=1;
            ans[now]=s[i];
            pre=s[i];
            dfs(now+1);
            vis[i]=0;
        }
    }
}
void work()
{
    scanf("%s",s);
    n = strlen(s);
    clr0(vis);
    dfs(0);
}
int main()
{
	work();
	return 0;
}
</span>

其实也不难解决,只要开个map记录26个字符对应的个数,每次dfs之前确定还有相应字符并吧cnt--,dfs完成后++回来即可

5、矩阵乘法A

又是这种奇怪输入的题,由于中间有空行,还是没什么难的地方,是用sscanf可以轻松解决

针对西安交通大学自然语言处理课程第四次作业的相关资料或指导,虽然具体的题目和解答可能依赖于该学年特定的教学安排以及教师的要求[^1],可以提供一些一般性的建议来帮助理解和完成这类作业。 通常情况下,在自然语言处理(NLP)领域内,第四次作业可能会围绕较为复杂的主题展开,比如但不限于: - **序列标注**:涉及命名实体识别、词性标注等任务。这要求理解条件随机场(CRFs),隐马尔可夫模型(HMMs),以及其他用于解决此类问题的方法。 - **句法分析**:学习依存关系解析(dependency parsing)或者短语结构树构建(constituency parsing),掌握不同的算法如移进规约(shift-reduce parsers)及其变体。 - **机器翻译**:探索统计方法到神经网络架构转变的过程,了解编码器-解码器框架(encoder-decoder framework),注意力机制(attention mechanisms)的作用原理。 对于上述任何一个话题的学习资源推荐如下: ### 使用Python实现简单的CRF模型 ```python from sklearn_crfsuite import CRF import pandas as pd data = ... # 加载数据集 X_train, y_train = data['features'], data['labels'] crf_model = CRF( algorithm='lbfgs', c1=0.1, c2=0.1, max_iterations=100, all_possible_transitions=True ) # 训练模型 crf_model.fit(X_train, y_train) ``` 此代码片段展示了如何利用`sklearn-crfsuite`库创建并训练一个条件随机场模型来进行序列标注工作。 ### 构建基于Transformer的文本分类器 ```python from transformers import BertTokenizer, BertForSequenceClassification from torch.utils.data import DataLoader tokenizer = BertTokenizer.from_pretrained('bert-base-chinese') model = BertForSequenceClassification.from_pretrained('bert-base-chinese') def preprocess_function(examples): return tokenizer(examples["text"], truncation=True, padding="max_length") dataloader = DataLoader(dataset.map(preprocess_function), batch_size=8) ``` 这里提供了使用Hugging Face Transformers库加载预训练BERT模型,并将其应用于中文环境下的情感分析或其他类型的文本分类任务的一个简单例子。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值