作业介绍

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int n,a[N];
void bubblesort(){
	for(int i=1;i<n;i++){
		for(int j=1;j<=n-i;j++){
			if(a[j]>a[j+1])swap(a[j],a[j+1]);
		}
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
}
void selectsort(){
	for(int i=1;i<=n;i++){
		int maxx = 1e9,id=0;
		for(int j=i;j<=n;j++){
			if(a[j]<maxx)maxx=a[j],id=j;
		}
		swap(a[id],a[i]);
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
}
void insertsort(){
	//5 3 2 4 6 1
	//2 3 4 5
	//第i个数,一直和前面比较,如果前面一个数比他大,前面的数向后移动一位,否则将这个数插入到这个位置
	for(int i=2;i<=n;i++){
		//插入的是a[i]
		int t = a[i];
		int j = i-1;
		while(j>=1 && t<a[j]){
			a[j+1] = a[j];
			j--;
		}
		a[j+1] = t;
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	insertsort();
	return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int n,a[N];
void bubblesort(){
	for(int i=1;i<n;i++){
		for(int j=1;j<=n-i;j++){
			if(a[j]>a[j+1])swap(a[j],a[j+1]);
		}
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
}
void selectsort(){
	for(int i=1;i<=n;i++){
		int maxx = 1e9,id=0;
		for(int j=i;j<=n;j++){
			if(a[j]<maxx)maxx=a[j],id=j;
		}
		swap(a[id],a[i]);
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
}
void insertsort(){
	//5 3 2 4 6 1
	//2 3 4 5
	//第i个数,一直和前面比较,如果前面一个数比他大,前面的数向后移动一位,否则将这个数插入到这个位置
	for(int i=2;i<=n;i++){
		//插入的是a[i]
		int t = a[i];
		int j = i-1;
		while(j>=1 && t<a[j]){
			a[j+1] = a[j];
			j--;
		}
		a[j+1] = t;
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
}
void QuickSort(int l,int r){	
	if(l>=r)return;
	int tmp = a[l],i=l,j=r;
	while(i<j){
		while(i<j && a[j]>=tmp)j--;
		while(i<j && a[i]<=tmp)i++;
		swap(a[i],a[j]);
	}
	swap(a[i],a[l]);
	QuickSort(l,i-1);
	QuickSort(i+1,r);
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	QuickSort(1,n);
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
	return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int n,a[N],b[N];
void bubblesort(){
	for(int i=1;i<n;i++){
		for(int j=1;j<=n-i;j++){
			if(a[j]>a[j+1])swap(a[j],a[j+1]);
		}
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
}
void selectsort(){
	for(int i=1;i<=n;i++){
		int maxx = 1e9,id=0;
		for(int j=i;j<=n;j++){
			if(a[j]<maxx)maxx=a[j],id=j;
		}
		swap(a[id],a[i]);
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
}
void insertsort(){
	//5 3 2 4 6 1
	//2 3 4 5
	//第i个数,一直和前面比较,如果前面一个数比他大,前面的数向后移动一位,否则将这个数插入到这个位置
	for(int i=2;i<=n;i++){
		//插入的是a[i]
		int t = a[i];
		int j = i-1;
		while(j>=1 && t<a[j]){
			a[j+1] = a[j];
			j--;
		}
		a[j+1] = t;
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
}
void QuickSort(int l,int r){	
	if(l>=r)return;
	int tmp = a[l],i=l,j=r;
	while(i<j){
		while(i<j && a[j]>=tmp)j--;
		while(i<j && a[i]<=tmp)i++;
		swap(a[i],a[j]);
	}
	swap(a[i],a[l]);
	QuickSort(l,i-1);
	QuickSort(i+1,r);
}
void mergesort(int l,int r){
	if(l>=r)return;
	int mid = (l+r)/2;
	mergesort(l,mid);
	mergesort(mid+1,r);
	//合并左右部分
	int i=l,j=mid+1,cnt=l;
	while(i<=mid && j<=r){
		if(a[i]<a[j]){
			b[cnt] = a[i];
			cnt++;
			i++;
		}
		else{
			b[cnt] = a[j];
			cnt++;
			j++;
		}
	}
	while(i<=mid){
		b[cnt] = a[i];cnt++;i++;
	}
	while(j<=r){
		b[cnt] = a[j];cnt++;j++;
	}
	for(int i=l;i<=r;i++)a[i] = b[i];
	
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	mergesort(1,n);
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
	return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n,a[15],book[15];
void print(){
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
	cout<<endl;
}
void dfs(int x){
	//给第x个格子放数
	if(x>n){
		print();
		return;
	}
	for(int i=1;i<=n;i++){
		if(book[i]==0){
			a[x] = i;
			book[i] = 1;
			dfs(x+1);
			book[i] = 0;
		}
	}
}
int main(){
	cin>>n;
	dfs(1);
	return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n,a[15][15],cnt;
void print(){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(a[i][j]==1){
				cout<<j<<" ";
			}
		}
	}
	cout<<endl;
}
int check(int x,int y){
	//判断放到第x行第y列能否成功
	//上
	for(int i=1;i<x;i++){
		if(a[i][y]==1)return 0;
	}
	//左上
	int i=x-1,j=y-1;
	while(i>=1 && j>=1){
		if(a[i][j]==1)return 0;
		i--;j--;
	}
	//右上
	i=x-1;j=y+1;
	while(i>=1 && j<=n){
		if(a[i][j]==1)return 0;
		i--;
		j++;
	}
	return 1;
}
void dfs(int x){
	if(x>n){
		cnt++;
		if(cnt<=3)
			print();
		return;
	}
	for(int i=1;i<=n;i++){
		if(check(x,i)==1){
			a[x][i] = 1;
			dfs(x+1);
			a[x][i] = 0;
		}
	}
}
int main(){
	cin>>n;
	dfs(1);
	cout<<cnt<<endl;
	return 0;
}
状态
已结束
题目
2
开始时间
2026-9-2 0:00
截止时间
2026-9-10 23:59
可延期
24 小时