outman013
斗师
排名 1049
距离下一等级 大斗师 还需AC 12 题

真实姓名

不显示

Email

013@qq.com

个性签名

宁为玉碎,不为瓦全!oj.aicoders.cn

#include <bits/stdc++.h> using namespace std; int a[10][10]; int w[10],p[10]; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>w[i]>>p[i]; } //物品数量 for(int i=0;i<=n;i++){ //背包容量 for(int j=0;j<=6;j++){ //如果背包容量为0 或者物品数量为0 if(i==0 || j==0){ a[i][j] = 0; } //如果背包容量放不下当前物品 继承上方单元格的最大价值 else if(w[i] > j){ a[i][j] = a[i-1][j]; }//能够放下 else{ //不妨当前物品的最大价值 放当前物品的最大价值 a[i][j] = max(a[i-1][j],a[i-1][j-w[i]]+p[i]); } } } cout<<a[n][6]; return 0; }

#include <bits/stdc++.h> using namespace std; stack ty; int main(){ int n; cin>>n; if(n==0){ cout<<0; return 0; } while(n){ ty.push(n%2); n/=2; } int l=ty.size(); for(int i=0;i<l;i++){ cout<<ty.top(); ty.pop(); } return 0; }

#include <bits/stdc++.h> using namespace std; //记录洞的状态 下标-编号 元素-洞的状态 1-被搜查过 0-没有搜查过 int a[35]; int main(){ //洞的数量 int n; cin>>n; //定义查找次数 int i=10000; //定义当前搜查的洞口编号 int m = 1; //跳过的洞口数 int s = 2; //当前搜查过的洞口数量 int cnt = 0; while(i--){ //所有洞口都查过了 if(cnt == n){ cout<<"It is nice!"; return 0; } //防止m超过n的范围 m%=n; if(m==0){ m=n; } //判断当前洞口是否搜查过 if(a[m] == 0){ a[m] = 1; cnt++; }

	//计算下一个搜查的洞口编号 
	m += s;
	s++;
} 
for(int i=1;i<=n;i++){
	if(a[i]==0){
		cout<<i<<' ';
	}
}
return 0;

}

#include <bits/stdc++.h> using namespace std; int main(){ string str; cin>>str;

//求和变量 
int sum = 0,j = 1;
for(int i=0;i<str.length()-1;i++){
	if(str[i]>='0' && str[i]<='9'){
		sum += (str[i]-'0')*j;
		j++;
	}
}
//判断计算的识别码是否为10 
char x;
if(sum%11 == 10){
	x = 'X';
}else{
	x = (sum%11)+'0'; 
}
//判断最后一位是被码是否符合 
if(str[str.length()-1] == x){
	cout<<"Right";
}else{
	for(int i=0;i<str.length()-1;i++){
		cout<<str[i];
	} 
	cout<<x;
}
return 0;

}

#include <bits/stdc++.h> using namespace std; int n,flag = 0;//0-没有找到 1-找到了 int a[15][15]; //记录走过的路的状态 1-走过了 0-没有走过 int vis[10][10]; //方向数组 int dx[5] = {-1,1,0,0}; int dy[5] = {0,0,-1,1}; //深度优先遍历 void dfs(int x,int y){ //2.判断退出条件 if(a[x][y] == a[n][n]){ flag = 1; return ; } //3.枚举所有可能性(四个方向) for(int i=0;i<4;i++){ int xx = x+dx[i]; int yy = y+dy[i]; //4.验证可能性 if(xx>=0 && xx<n && yy>=0 && yy<n && a[xx][yy] != 1 && vis[xx][yy] != 1){ vis[xx][yy] = 1; dfs(xx,yy); //回溯 vis[xx][yy] = 0; } } return ; } int main(){ //迷宫的边界 cin>>n; //给迷宫赋值 for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cin>>a[i][j]; } } //如果第一步就是假山 if(a[0][0] == 1){ cout<<"NO"; return 0; }

//1.开始深搜(确认深搜的起始坐标) 
vis[0][0] = 1;
dfs(0,0);

if(flag == 1){
	cout<<"YES";
}else{
	cout<<"NO";
}
return 0;

} /*

5 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 1 0 0 2

*/

#include <bits/stdc++.h> using namespace std; int n,flag = 0;//0-没有找到 1-找到了 int a[10][10]; //记录走过的路的状态 1-走过了 0-没有走过 int vis[10][10]; //方向数组 int dx[5] = {-1,1,0,0}; int dy[5] = {0,0,-1,1};

//起始坐标 终点坐标 int sx,sy,ex,ey;

void dfs(int x,int y){ //2.判断结束条件 if(x == ex && y == ey){ flag = 1; return ; }

//3.枚举所有可能性 
for(int i=0;i<4;i++){
	int xx = x+dx[i];
	int yy = y+dy[i];
	//4.验证可能性 
	if(xx>=0 && xx<n && yy>=0 && yy<n && a[xx][yy] != 0 && vis[xx][yy] != 1){
		vis[xx][yy] = 1;
		dfs(xx,yy);
	}
}

} int main(){ //迷宫的边界 cin>>n; //给迷宫赋值 for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cin>>a[i][j]; } }

cin>>sx>>sy>>ex>>ey;
sx-=1;
sy-=1;
ex-=1;
ey-=1;


if(a[sx][sy] == 0 || a[ex][ey] == 0){
	cout<<"NO";
	return 0;
} 

//1.开始深搜 
vis[sx][sy] = 1;
dfs(sx,sy);

if(flag == 1){
	cout<<"YES";
}else{
	cout<<"NO";
}
return 0;

}

注册于

2023-04-07 19:14:13

统计

练习情况

标题 时间
…… 2023-04-09 13:24:10
…… 2023-04-16 13:20:44
比赛 名次 积分
初始积分 1500
作业 时间
李老师周天 9:00C++ 第三次课后作业 2023-09-24 11:59:04
李老师周天 9:00C++ 第二次课后作业 2023-09-15 15:53:24
李老师周天 9:00C++ 第一次课后作业 2023-09-10 11:51:22
递归练习3 2023-06-11 11:57:31
递归练习2 2023-06-04 11:55:55
初识递归 2023-05-28 11:12:29
冒泡排序+桶排序 2023-05-21 11:50:25
高精度练习 2023-05-14 11:16:52
结构体练习 2023-04-16 11:37:58
字符串强化练习 2023-04-14 15:20:09
考试订正 2023-04-09 12:04:39
4月8日 - 周六9:00-12:00 2023-04-08 0:38:37