-
guest说:
写一份旅行商问题实验心得
本次实验是对旅行商问题的探索,旅行商问题是目前所有NP完全问题中最著名的一种,也是最常考查的一种。
在实验中,我们尝试使用模拟退火算法来解决旅行商问题,该算法的基本思想是通过不断的尝试和改变,最终找到最优解。模拟退火算法的过程可以分为三个步骤:初始化,迭代和接受。首先,我们初始化一个随机的解,然后进行迭代,每次迭代都会搜索一个更好的解,之后根据概率函数决定是否接受该解,如果接受则更新当前最优解,再继续迭代,如果拒绝则恢复到原来的解,重新迭代。最终,当找到最优解或者迭代次数达到最大时,即可得到最优解。
通过本次实验,我掌握了旅行商问题的基本概念,也学会了如何使用模拟退火算法来解决旅行商问题,虽然这个算法的效率还不是很高,但它的思想却是非常有价值的。本次实验也让我对NP完全问题有了更深入的认识,同时也激发了我对更复杂的NP完全问题的学习兴趣。
-
guest说:
用c语言编写程序计算某区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔减、加之和
,其间隔为
include
define MAX 1000
int prime[MAX] = {0};
// 找出质数
void findPrime(int m, int n)
{
int i, j;
int cnt = 0; // 质数个数
int sum = 0; // 加减和
int flag;
for (i = m; i 0; i--)
{
sum += prime[i] - prime[i - 1];
printf("%d ", prime[i]);
}
printf("%d\n", prime[0]);
printf("%d\n", sum);
}int main()
{
int m, n;
scanf("%d %d", &m, &n);
findPrime(m, n);
return 0;
} -
guest说:
用c语言编写程序计算某区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔减、加之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的sum值
,最后输出cnt和sum的值。
#include
#includeint main(void)
{
int i, j, k, cnt = 0, sum = 0;
int a, b;
printf("请输入区间(a, b):");
scanf("%d, %d", &a, &b);
int prime[b - a + 1];
for (i = 0; i = a && ij <= b)
prime[ij - a] = 1;
}
for (k = 0; k <= b - a; k++)
{
if (prime[k] == 0)
{
cnt++;
sum += k + a;
printf("%d\t", k + a);
}
}
printf("\n素数的个数cnt:%d\n", cnt);
printf("素数的和sum:%d\n", sum);
return 0;
} -
guest说:
用fastapi+sqlalchemy+pydantic+mysql搭建一个项目,展示出合理的目录结构
├─app
│ ├─main.py
│ ├─models.py
│ ├─schema.py
│ ├─crud.py
│ └─utils.py
├─config
│ └─config.py
├─migrations
│ ├─env.py
│ ├─script.py.mako
│ ├─versions
│ └─README
├─tests
│ ├─conftest.py
│ └─test_main.py
└─.env -
guest说:
用fastapi+sqlalchemy+pydantic+mysql搭建一个简单的学生信息系统,要求代码合理,目录结构合理
import uvicorn
from fastapi import FastAPI, Request, Response
from pydantic import BaseModel
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker初始化数据库连接:
engine = create_engine('mysql+pymysql://root:123456@127.0.0.1:3306/test')
创建对象的基类:
Base = declarative_base()
定义Student对象:
class Student(Base):
# 表的名字:
tablename = 'student'# 表的结构: id = Column(Integer, primary_key=True, autoincrement=True) name = Column(String(20)) age = Column(Integer) gender = Column(String(20))
初始化数据库连接:
Base.metadata.create_all(engine)
创建DBSession类型:
DBSession = sessionmaker(bind=engine)
实例化FastAPI
app = FastAPI()
定义Request Body
class StudentInfo(BaseModel):
name: str
age: int
gender: str获取所有学生信息
@app.get('/students')
def get_students():
session = DBSession()
try:
student_list = []
student_info = session.query(Student).all()
for student in student_info:
student_list.append({
'id': student.id,
'name': student.name,
'age': student.age,
'gender': student.gender
})
return student_list
except Exception as e:
return {'error': str(e)}
finally:
session.close()添加学生信息
@app.post('/students')
def add_students(student_info: StudentInfo):
session = DBSession()
try:
student = Student(
name=student_info.name,
age=student_info.age,
gender=student_info.gender
)
session.add(student)
session.commit()
session.refresh(student)
return {
'id': student.id,
'name': student.name,
'age': student.age,
'gender': student.gender
}
except Exception as e:
return {'error': str(e)}
finally:
session.close()更新学生信息
@app.put('/students/{id}')
def update_students(id: int, student_info: StudentInfo):
session = DBSession()
try:
student = session.query(Student).filter(Student.id == id).one()
student.name = student_info.name
student.age = student_info.age
student.gender = student_info.gender
session.commit()
return {
'id': student.id,
'name': student.name,
'age': student.age,
'gender': student.gender
}
except Exception as e:
return {'error': str(e)}
finally:
session.close()删除学生信息
@app.delete('/students/{id}')
def delete_students(id: int):
session = DBSession()
try:
student = session.query(Student).filter(Student.id == id).one()
session.delete(student)
session.commit()
return {'success': True}
except Exception as e:
return {'error': str(e)}
finally:
session.close()if name == 'main':
uvicorn.run(app, host="127.0.0.1", port=8000)