0
点赞
收藏
分享

微信扫一扫

三国杀 张菖蒲 严教 计算器

陬者 2022-04-23 阅读 64
c++

使用方法:直接复制代码丢devC++运行 直接输入点数,空格隔开,输入0结束输入。
PS:最终结果为了避免重复输出进行了剪枝,每种牌数只输出一个结果

#include<bits/stdc++.h>
using namespace std;
int input[100];
int i;
int to;
int bj;
void work(int *a,int len) {
	int sum1=0;
	int sum2=0;
	for(int mid=1; mid<len; mid++) {
		sum2=0;
		sum1=0;
		for(int k=0; k<mid; k++) {
			sum1+=a[k];
		}
		for(int k=mid; k<len; k++) {
			sum2+=a[k];
		}
		if(sum1==sum2) {
			cout<<"情况"<<to<<":"<<endl; 
			to++;
			for(int k=0; k<mid; k++) {
				cout<<a[k]<<" ";
			}
			cout<<endl;
			for(int k=mid; k<len; k++) {
				cout<<a[k]<<" ";
			}
			cout<<endl<<"总分牌数:"<<len<<"     总和:"<<sum1<<endl<<endl;
			bj=1;
			return;
		}
	}

}

int main() {
	to=1;
	for(i=0; i<100; i++) {
		cin>>input[i];
		if(input[i]==0) break;
	}
	for(int len=i; len>0; len--) {
		bj=0;
		work(input,len);
		while(next_permutation(input,input+i)) {
			if(bj==1) break;
			work(input,len);
		}
	}
	return 0;
}

请添加图片描述

举报

相关推荐

0 条评论