爱冬枣的花猫

//矩阵置零
void fun0(int** A, int M, int N) {
int i=0, j=0;
int row[M];
int col[N];
for(i=0; i<M; i++)
row[i] = 0;
for(j=0; j<N; j++)
col[j] = 0;
for(i=0; i<M; i++)
{
for(j=0; j<N; j++)
{
if(A[i][j] == 0)
{
row[i] = 1;
col[j]= 1;
}
}
}
for(i=0; i<M; i++)
{
if(row[i] == 1)
{
for(j=0; j <N; j++)
A[i][j] = 0;
}
}
for(j=0; j<N; j++)
{
if(col[j] == 1)
{
for(i=0; i <M; i++)
A[i][j] = 0;
}
}
}

//矩阵就地旋转
void fun(int **Mat, int N){
int i=0,j=0;
int temp[N][N];
for (i=0;i<N;i++)
{
for (j=0;j<N;j++)
temp[j][N-1-i]=Mat[i][j];
}
for (i=0;i<N;i++)
{
for (j=0;j<N;j++)
Mat[i][j]= temp[i][j];
}
}
//直接插入排序
void InsertSort(SqList L){
int i,j;
for(i=1;i<=L.Length;i++){
L.elem[0]=L.elem[i];
for(j=i;L.elem[j-1]>L.elem[0]&&j>0;j–)
L.elem[j]=L.elem[j-1];
L.elem[j]=L.elem[0];
}
}
//KMP算法
void get_nextval(char T[], int nextval[])
{
int i = 1, j = 0;
nextval[1] = 0;
while (i < T[0])
if (j == 0 || T[i] == T[j])
{
++i;
++j;
if (T[i] != T[j])
nextval[i] = j;
else
nextval[i] = nextval[j];
} else
j = nextval[j];
}
int Index_KMP(char S[], char T[], int pos, int next[])
{
int i = pos, j = 1;
while (i <= S[0] && j <= T[0])
if (j == 0 || S[i] == T[j])
{
++i;
++j;
}
else
j = next[j];
if (j > T[0])
return i - T[0];
else
return 0;
}
//二分搜索(分治法)
int binsearch(int A[],int key,int min,int max){
sort(A,A+max);int mid;
while(min <= max){
mid = (min+max)/2;
if(key == A[mid])
return mid;
else if(key > A[mid])
min = mid+1;
else
max = mid-1;}return -2;}
//归并排序
void merge(vector& Array, int start, int mid, int end){
vector temp = vector(end - start + 1);
int leftStart = start;
int rightStart = mid + 1;
int index = 0;
while(leftStart <= mid && rightStart <= end){
if(Array[leftStart] <= Array[rightStart])
temp[index++] = Array[leftStart++];
else
temp[index++] = Array[rightStart++];
}
while(leftStart <= mid) temp[index++] = Array[leftStart++];
while(rightStart <= end) temp[index++] = Array[rightStart++];
for(int i = 0; i < index; ++i) Array[start+i] = temp[i];
}

void mergeSort(vector& Array, int start, int end){
if(start < end){
int mid = (start + end) / 2;
mergeSort(Array, start, mid);
mergeSort(Array, mid+1, end);
merge(Array, start, mid, end);
}
}
//查找第K小元素(分治法)
int Kminselect(int a[], int s, int t, int k) {
int i = s, j = t;
int tmp;
if(s < t){
tmp = a[s];
while(i != j){while(j > i && a[j] >= tmp)j–;a[i] = a[j];while(i < j && a[i] <= tmp)i++;
a[j] = a[i];}
a[i] = tmp;
if(k-1 == i)
return a[i];
else if(k-1 < i)
return Kminselect(a, s, i-1, k);
else
return Kminselect(a, i+1, t, k);}
else if(s == t && s == k-1)
return a[k-1];
}
//循环日程安排问题(分治法)
void Plan(int a[][N],int k){
a[1][1] = 1; a[1][2] = 2;
a[2][1] = 2; a[2][2] = 1;
if(k>1)
for(int t=1;t<k;t++){
for(int i=1+pow(2.0,t);i<=pow(2.0,t+1);i++){
for(int j=1;j<=pow(2.0,t);j++){
a[i][j] = a[i-(int)pow(2.0,t)][j] + (int)pow(2.0,t);}}
for(int i=1;i<=pow(2.0,t);i++){
for(int j=1+pow(2.0,t);j<=pow(2.0,t+1);j++){
a[i][j] = a[i][j-(int)pow(2.0,t)] + (int)pow(2.0,t);}}
for(int i=1+pow(2.0,t);i<=pow(2.0,t+1);i++){
for(int j=1+pow(2.0,t);j<=pow(2.0,t+1);j++){
a[i][j] = a[i-(int)pow(2.0,t)][j-(int)pow(2.0,t)];}}}}
//最长公共子序列
void lcs(int i, int j, int [][]b) {
String S1 = s1.toString();
char[] ss1=S1.toCharArray();
if (i == 0 || j == 0) {
return;}
if (b[i][j] == 1) {
lcs(i - 1, j - 1, b);
s3.append(ss1[i - 1]);
} else if (b[i][j] == 2) {
lcs(i - 1, j, b);
} else lcs(i, j - 1, b);}
void subsequenceOrder() {
int m = s1.length();
int n = s2.length();
int c [][] = new int[m+1][n+1];
int b [][] = new int[m+1][n+1];
String S1 = s1.toString();
char[] ss1=S1.toCharArray();
String S2 = s2.toString();
char[] ss2=S2.toCharArray();
for (int i = 1; i <= m; ++i) c[i][0] = 0;
for (int i = 1; i <= n; ++i) c[0][i] = 0;
for (int i = 1; i <= m; ++i) {
for (int j = 1; j <= n; ++j) {
if (ss1[i - 1] == ss2[j - 1]) {
c[i][j] = c[i - 1][j - 1] + 1;
b[i][j] = 1;
} else if (c[i - 1][j] > c[i][j - 1]) {
c[i][j] = c[i - 1][j];
b[i][j] = 2;
} else {
c[i][j] = c[i][j - 1];
b[i][j] = 3;}}}
lcs(m, n, b);}
//求解拆分集合为相等的子集合问题(动态规划法)
int split(int n){
int sum = n * (n + 1) / 4;
dp[0][0] = 1;
for(int i = 1;i <= n;i ++){
for(int k = 0;k <= sum;k ++){
if(i > k)
dp[i][k] = dp[i - 1][k];
else
dp[i][k] = dp[i - 1][k] + dp[i - 1][k - i];}}
return dp[n][sum] / 2;
}
//求解整数拆分问题(动态规划法)
void Split(int n, int k){
for (int i = 1; i <= n; i++)
for (int j = 1; j <= k; j++){
if (i == 1 || j == 1)
dp[i][j] = 1;
else if (i < j)
dp[i][j] = dp[i][i];
else if (i == j)
dp[i][j] = dp[i][j - 1] + 1;
else
dp[i][j] = dp[i][j - 1] + dp[i - j][j];}}
//求解最长递增子序列问题(动态规划法
void IncreaseOrder(int a[],int dp[],int x[][N],int n){
int i, j, k, index;
for (i = 0; i < n; i++) {
dp[i] = 1;
x[i][0] = a[i];
int max = 1;
int maxindex=i;
for (j=0; j< i;j ++) {
if ((a[j] < a[i]) && (max <dp[j]+1)) {
max = dp[j]+1 ;
maxindex=j ;}}
if(maxindex!=i){
dp[i] = max;
for (k = 0; k < max-1; k++)
x[i][k] = x[maxindex][k] ;
x[i][max-1]= a[i] ;
}}}
//最短路径(迪杰斯特拉算法)
void ShortestPath_DIJ(AMGraph G, int v0){
int v , i , w , min;
int n = G.vexnum;
for(v = 0; v < n; ++v){
S[v] = false;
D[v] = G.arcs[v0][v];
if(D[v] < MaxInt) Path [v] = v0;
else Path [v] = -1;
}
S[v0]=true;
D[v0]=0;
for(i = 1;i < n; ++i){
min= MaxInt;
for(w = 0; w < n; ++w)
if(!S[w] && D[w] < min){
v = w;
min = D[w];
}
S[v]=true;
for(w = 0;w < n; ++w)
if(!S[w] && (D[v] + G.arcs[v][w] < D[w])){
D[w] = D[v] + G.arcs[v][w];
Path [w] = v;
}}}
//部分背包问题(贪心法)
void Knap(){
for(int i = 1;i <= n;i ++){
if(W >= A[i].w){
W -= A[i].w;
A[i].x = 1;
V += A[i].v;
}else{
A[i].x = W/A[i].w;
V += A[i].v * A[i].x;
break;}}}
//求解流水作业调度问题(贪心法)
int solve(){
int i,j,k;
NodeType c[N];
for(i=0;i<n;i++){
c[i].no=i;
c[i].group=(a[i]<=b[i]);
c[i].time=a[i]<=b[i]?a[i]:b[i];}
sort(c,c+n);
j=0;k=n-1;
for(i=0;i<n;i++){
if(c[i].group1) best[j++]=c[i].no;
else best[k–]=c[i].no;}
int f1=0;
int f2=0;
for(i=0;i<n;i++){
f1+=a[best[i]];
f2=max(f2,f1)+b[best[i]];}
return f2;}
//0/1背包问题(回溯法)
void dfs(int i,int tw,int tv,int rw,int op[]){
int j;
if (i>n) { if (tw
W && tv>maxv) { maxv=tv;
for (j=1;j<=n;j++)
x[j]=op[j];}}
else { if (tw+w[i]<=W)
{ op[i]=1;
dfs(i+1,tw+w[i],tv+v[i],rw-w[i],op);}
if ( tw+rw-w[i]>=W )
{ op[i]=0;
dfs(i+1,tw,tv,rw-w[i],op);
}}}
//求解简单装载问题(回溯法)
void dfs(int num,int tw,int rw,int op[],int i){
if(i>n){
if(tw==W&&num<minnum){
maxw=tw;
minnum=num;
for(int j=1;j<=n;j++){
x[j]=op[j]; }}
}else{
op[i]=1;
if(tw+w[i]<=W){
dfs(num+1,tw+w[i],rw-w[i],op,i+1);}
op[i]=0;
if(tw+rw-w[i]>=W){
dfs(num,tw,rw-w[i],op,i+1);}}}
//求解n皇后问题(非递归回溯法)
void Queens(int n){
int i = 1;
q[i] = 0;
while (i >= 1){
q[i]++;
while (q[i] <= n && !place(i))
q[i]++;
if (q[i] <= n){
if (i == n)
dispasolution(n);
else{
i++;
q[i] = 0;}}
else
i–;}}
//求解流水作业调度问题(回溯法)
void dfs(int i){
if(i>n){
if(f2[n]<bestf){
bestf=f2[n];
for(int j=1;j<=n;j++){
bestx[j]=x[j]; }}
}else{
for(int j=i;j<=n;j++){
swap(x[i],x[j]);
f1+=a[x[i]];
f2[i]=max(f1,f2[i-1])+b[x[i]];
if(f2[i]<bestf){
dfs(i+1); }
f1-=a[x[i]];
swap(x[i],x[j]);
}}}

//多项式求和
//3 1.0
//1 2 3 4
//10.000
#include
using namespace std;
typedef long long ll;
int main()
{
int n;
double m;
double a[30000];
while(cin>>n>>m)
{
double fx=0,x0=0;
for(int i=n;i>=0;i–)
cin>>a[i];
for(int i=n;i>0;i–)
{
x0=a[i]pow(m,i);
fx+=x0;
}
printf(“%.3lf\n”,fx+a[0]);
}
return 0;
}
//快速幂运算
//2 3
//8
#include
#include
using namespace std;
int main() {
int x, y;
cin >> x >> y;
int ans = 1;
while(y > 0) {
if(y%2 == 0) {
y = y/2;x = x
x%1000;
}
else {y–;ans = ansx%1000;y /= 2;x = xx%1000;}}
cout << ans;
}
//n以内素数个数
//1000
//160
#include
#include
using namespace std;
const int SIZE = 1e8+100;
int prime[SIZE];
bool is_prime[SIZE];
int slove(int n){
long long p = 0;
for(int i = 0; i <= n; i++)
is_prime[i] = true;
is_prime[0] = is_prime[1] = false;
for(int i = 2; i <= n; i++){
if(is_prime[i]){
prime[p++] = i;
for(int j = 2 * i; j <= n; j += i)
is_prime[j] = false;}}
return p;}
int main(){
long long n;
while(cin >> n){
int res = slove(n);
cout << res << endl;}}
//特别数的和
//40
//574
#include<bits/stdc++.h>
using namespace std;
int judge(int n){
int flag=0;
while(n>0){
if(n%102||n%100||n%101||n%109){
flag=1;
}
n=n/10;
}
return flag;
}
int main(){
int sum=0;
int n=0;
cin>>n;
for(int i=1;i<=n;i++){
if(judge(i)==1){
sum=sum+i;
}
}
cout<<sum;
return 0;
}
//插入排序还是归并排序
//10
//3 1 2 8 7 5 9 4 6 0
//1 2 3 7 8 5 9 4 6 0
//Insertion Sort
//1 2 3 5 7 8 9 4 6 0
#include
#include
using namespace std;
const int N = 110;
int origin[N], tempOri[N], changed[N];
int n;
bool isSame(int A[], int B[]){
for(int i=0; i<n; ++i){
if(A[i]!=B[i]) return false;
}
return true;
}
bool showArray(int A[]){
for(int i=0; i<n; ++i){
printf(“%d”, A[i]);
if(i<n-1) printf(" “);}
printf(”\n");}
bool insertSort(){
bool flag = false;
for(int i=1; i<n; ++i){
if(i!=1 && isSame(tempOri, changed)){
flag = true; }
int temp=tempOri[i], j=i;
while(j>0 && temp<tempOri[j-1]){
tempOri[j] = tempOri[j-1];
j–; }
tempOri[j] = temp;
if(flag == true){
return true;}}
return false; }

void mergeSort(){
bool flag = false;
for(int step=2; step/2<=n; step*=2){
if(step!=2 && isSame(tempOri, changed)){
flag = true;
}
for(int i=0; i<n; i+=step){
sort(tempOri+i, tempOri+min(i+step, n));
}
if(flag==true){
showArray(tempOri);
return;} } }

int main(){
scanf(“%d”, &n);
for(int i=0; i<n; ++i){
scanf(“%d”, &origin[i]);
tempOri[i] = origin[i]; }
for(int i=0; i<n; ++i){
scanf(“%d”, &changed[i]);
}
if(insertSort()){
printf(“Insertion Sort\n”);
showArray(tempOri);
}else{
printf(“Merge Sort\n”);
for(int i=0; i<n; ++i){
tempOri[i] = origin[i];
}
mergeSort();
}
return 0;}
//改写二分搜索算法
//6 5 2 4 6 8 10 12
//1 2
#include<stdio.h>
void find(int a[],int low ,int high,int x,int &i,int &j){
while(low<=high)
{
int mid=(low+high)/2;
if(x==a[mid])
{
i=j=mid;
return;
}
if(x<a[mid])
high=mid-1;
else
low=mid+1;
}
i=high;
j=low;
return ;
}
int main(){
int i,j,n,x;
scanf(“%d%d”,&n,&x);
int a[n];
for(i=0; i<n;i++){
scanf(“%d”,&a[i]);
}
find(a,0,n-1,x,i,j);
printf(“%d “,i);
printf(”%d”,j);
return 0;
}

//古老的汉诺塔
#include<bits/stdc++.h>
using namespace std;
int n,cou=0;
void hanio(int n,char a,char b,char c) //b为中间
{
cou++;
if(n1){
printf(“%c–>%c\n”,a,c);}
else{
hanio(n-1,a,c,b);
printf(“%c–>%c\n”,a,c);
hanio(n-1,b,a,c);}}
int main()
{
cin>>n;
hanio(n,‘A’,‘B’,‘C’);
printf(“%d\n”,cou);
return 0;
}
// 数的三次方根
#include<bits/stdc++.h>
using namespace std;
int main(){
double n;
cin>>n;
if(n>=0)
printf(“%.6lf\n”,pow(n,1.0/3));
else{
printf(“-%.6lf\n”,pow(-n,1.0/3));}
}
//01背包问题
#include <bits/stdc++.h>
using namespace std;
int N,V;
int v[1005],w[1005],dp[1005];
int main() {
cin>>N>>V;
for(int i=1; i<=N; i++) {
cin>>v[i]>>w[i];}
for(int i=1; i<=N; i++) {
for(int j=V; j>=v[i]; j–) {
dp[j]=max(dp[j],dp[j-v[i]]+w[i]);}}
cout<<dp[V];return 0;}
//流水作业调度
#include<bits/stdc++.h>
using namespace std;
struct Node{
int number1;
int number2;
};
bool sort_N1(Node a,Node b){
return a.number1 < b.number1;
} bool sort_N2(Node a,Node b){
return a.number2 > b.number2;
}
int main(){
int N;
int a[101];
int b[101];
Node *stu1 = new Node[101];
Node *stu2 = new Node[101];
Node stu3 = new Node[101];
cin >> N;
for(int i = 0; i < N; i++){
cin >> a[i] >> b[i];
}
int k1 = 0,k2 = 0;
for(int i = 0; i < N; i++){
if(a[i] < b[i]){
stu1[k1].number1 = a[i];
stu1[k1].number2 = b[i];
k1++;
}else{
stu2[k2].number1 = a[i];
stu2[k2].number2 = b[i];
k2++;
}
}
sort(stu1,stu1+k1,sort_N1);
sort(stu2,stu2+k2,sort_N2);
int k3 = 0;
for(int i = 0; i < k1; i++){
stu3[k3].number1 = stu1[i].number1;
stu3[k3].number2 = stu1[i].number2;
k3++;}
for(int i = 0; i < k2; i++){
stu3[k3].number1 = stu2[i].number1;
stu3[k3].number2 = stu2[i].number2;
k3++; }
int m1,m2;
m1 = stu3[0].number1;
m2 = stu3[0].number2 + m1;
for(int i = 1; i < N; i++){
m1 = m1 + stu3[i].number1;
if(m1 < m2){
m2 = m2 + stu3[i].number2;
}else if(m1 > m2){
m2 = m1 + stu3[i].number2; }}
cout << m1 << ’ ’ << m2;
}
//求解资源分配问题
#include <bits/stdc++.h>
using namespace std;
#define Max_N 101
int m, n;
int arr[Max_N][Max_N];
int res[Max_N][Max_N];
int dp[Max_N][Max_N];
int run() {
for (int i = 1; i <= m; ++i) {
for (int j = 1; j <= n; ++j) {
for (int k = 1; k <= j; ++k) {
int sum = dp[i - 1][j - k] + arr[i][k];
if (sum >= dp[i][j]) {
dp[i][j] = sum;
res[i][j] = k;
}
}
}
}
return dp[m][n];
}
int main() {
cin >> m >> n;
for (int i = 0; i <= m; ++i) {
for (int j = 0; j <= n; ++j) {
cin >> arr[i][j];
}
}
int sum = run();
for (int i = m; i > 0; --i) {
cout << i << " " << res[i][n] << endl;
n -= res[i][n];
}
cout << sum;
return 0;
}
//最长公共子序列
#include<bits/stdc++.h>
using namespace std;
int main(){
int N,M;
string str1,str2;
cin >> N >> M;
cin >> str1 >> str2;
int m[N+1][M+1];
for(int i = 0; i < N + 1; i++){
for(int j = 0; j < M + 1; j++){
m[i][j] = 0;
}
}
for(int i = 0; i < N; i++){
for(int j = 0; j < M; j++){
if(str1[i] == str2[j] ){
m[i+1][j+1] = m[i][j] + 1;
}else{
m[i+1][j+1] = m[i+1][j] > m[i][j+1] ? m[i+1][j] : m[i][j+1];
}
}
}
cout << m[N][M];
}
//月饼
#include<bits/stdc++.h>
#include
#define Max 1010
using namespace std;
struct yuebin{
double space;
double value;
double all;
}a[Max];
bool cmp(yuebin a,yuebin b){
return a.value>b.value;}
int main(){
int N,D;
scanf(“%d%d”,&N,&D);
int i;
for(i=0;i<N;i++){
scanf(“%lf”,&a[i].space);}
for(i=0;i<N;i++){
scanf(“%lf”,&a[i].all);
a[i].value=a[i].all/a[i].space;}
sort(a,a+N,cmp);
double money=0;
for(int i=0;i<N;i++){
if(a[i].space<=D){
D-=a[i].space;
money+=a[i].all;}
else{
money+=D
a[i].value;
D=0;}
if(D
0)break;}
printf(“%.2f”,money);}
//会场安排问题
#include
#include
#include
using namespace std;
struct activity{
int time;
bool status;
activity(int time, bool status) : time(time), status(status) {}
bool operator<(activity other){
return time < other.time;}};
vector v;
int solve(){
int n = v.size();
int ans = 0;
int num = 0;
for (int i = 0; i < n; i++){
if (v[i].status){
num++; }
else{
num–; }
if (num > ans && (i == n - 1 || v[i].time < v[i + 1].time)){
ans = num;}}
return ans;}
int main(){
int n;
cin >> n;
int beginTime;
int endTime;
while (n–){
cin >> beginTime;
v.push_back(activity(beginTime, true));
cin >> endTime;
v.push_back(activity(endTime, false));
}
sort(v.begin(), v.end());
cout << solve() << endl;
}
//最优合并问题
#include<stdio.h>
#include
using namespace std;
#define N 10000
bool cmp(int a,int b){
return a>b;}
int max(int a[],int k){
sort(a,a+k,cmp);
int maxs=a[0]+a[1]-1;
int t=a[0]+a[1]-1;
for(int i=2;i<k;i++){
t+=a[i];
maxs+=t;}
return maxs;}
int min(int a[],int k){
sort(a,a+k);
int mins=0;
for(int i=0;i<k-1;i++){
mins+=a[i]+a[i+1]-1;
a[i]=a[i]+a[i+1];
a[i+1]=0;
sort(a,a+k);}
return mins;}
int main(){
int k,m,n;
int a[N];
scanf(“%d”,&k);
for(int i=0;i<k;i++){
scanf(“%d”,&a[i]);}
m=max(a,k);
n=min(a,k);
printf(“%d %d\n”,m,n);}
//多参加活动,生活才精彩
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
const ll maxn = 1e9+7;
const int N = 400000;
int num[N];
struct pe{
int s,e,f;
}p[110];
bool cmp(pe a,pe b){
return a.e < b.e;}
int main(){
int n;
cin >> n;
for(int i = 0;i < n;i++){
cin >> p[i].s >> p[i].e >> p[i].f;}
sort(p,p+n,cmp);
int star = 0;
int num = 0;
int sum = 0;
for(int i = 0;i < n;i++){
if(star <= p[i].s){
star = p[i].e;
sum+= p[i].f;
num++; }}
cout << num << " " << sum << endl;}
//加勒比海盗船——最优装载问题
#include<bits/stdc++.h>
using namespace std;
int p[100001] = {0};
int main(){
int t;
cin>>t;
while(t–){
int c,n;
cin>>c>>n;
int cnt = 0;
int w[n+1];
for(int i = 1;i<=n;i++) {
cin>>w[i];}
sort(w+1,w+n+1);
int tt = c;
for(int i = 1;i <= n;i++){
if(tt>=w[i]){
cnt++;
tt-=w[i];}else{
break;}}
cout<<cnt<<endl;}}
//求解汽车加油问题
#include<bits/stdc++.h>
using namespace std;
int p[100001] = {0};
int main(){
int d,k;
cin>>d>>k;
int dis[k+2] = {0};
for(int i = 1;i<=k;i++)
cin>>dis[i];
int cnt = 0;
int now = 0;
int t = d;
int flag = 1;
for(now = 0;now<k;now++){
t-=dis[now+1];
if(t<0){
flag = 0;
break;}else{
if(t<dis[now+2]){
cnt++;
t = d;}}}
if(flag){cout<<cnt<<endl;}
else cout<<“No Solution!”<<endl;}
//八皇后问题(*)
#include<stdio.h>
#include<math.h>
#include
#include<string.h>
using namespace std;
int n, *x,m=1;
long num;
char a[80000][50];
bool check(int k) {
for (int j = 1; j < k; j++) {
if (abs(k - j) == abs(x[j] - x[k]) || (x[j] == x[k])){return false;}}return true;}
void backtrack(int k) {
int i;
if (k > n) {
num++;
for ( i = 1; i <= n; i++){
a[m][x[i]] = ‘Q’;
m++;}}else{
for ( i = 1; i <= n; i++){
x[k] = i;
if (check(k)){
backtrack(k + 1);}}}}
int main() {
memset(a, ‘.’, sizeof(a));
cin >> n;
x = new int[n + 1];
backtrack(1);
for (int i = 1; i < m; i++){
for (int j = 1; j <= n; j++){
cout << a[i][j];
if (j < n)cout << " “;}
cout << endl;
if (i%n == 0&&i!=m-1) { cout << endl; }}
if (num == 0)
cout << “None”;
delete[]x;
return 0;}
//全排列(回溯,字典序)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
for(int i = 0;i < n;i++){
a[i] = i+1;}
int cnt = 0;do{
if(cnt==0){
cnt++;}else{
cout<<endl;}
for(int i = 0;i < n;i++){
cout<<a[i]<<” ";}
}while(next_permutation(a,a+n));}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值