看电影cg

 

#include <iostream>
using namespace std;
class qingwa {
	public:
		int a11,a2,a3,a4;
		void kexuejia(){
			cin>>a11;
			
		}
		int *a;
		void language(){
			a=(int *)malloc(sizeof(int)*a11);
			for(int i=0;i<a11;i++){
				cin>>a[i];
			}
		}
		void dianying(){
			cin>>a3;
		}
		int **a1;
		void yin(){
			
			a1=(int**)malloc(sizeof(int)*3);
			for(int i=0;i<3;i++){
				
				a1[i]=(int *)malloc(sizeof(int)*a3);
				
				
			}
			for(int i=0;i<a3;i++){
				cin>>a1[0][i];
			}
		}
		 void zi(){
		 		for(int i=0;i<a3;i++){
				cin>>a1[1][i];
			}
		 }
		 
		 int ** b;
		 int k1;
		 void jisuan(){
		 	k1=0;
		 	b=(int **)malloc(sizeof(int)*a3);
		 	for(int i=0;i<a3;i++){
		 		b[i]=(int *)malloc(sizeof(int)*(a11+3));
			 }
		 	for(int k=0;k<a11;k++){
			 
		 		for(int i=0;i<a3;i++){
				 if(a1[0][i]==a[k]){
				 	k1+=2;
				 }
				 if(a1[1][i]==a[k]){
				 	k1+=1;
				 }
				 b[i][k]=k1;//横行为电影,列为不同的人
				 //思路大概是用数组矩阵记录每台电影对于不同人的分数,最后计算出2分的数量,填在a11列,计算出1分填在a11+1列 
				 k1=0;
			}
			
		}
		 }
		 void kong(){
		 		for(int i=0;i<a3;i++){
				b[i][a11+1]=0;
				b[i][a11]=0;
				b[i][a11+2]=0;
		}
		 }
		 int j;
		 int j1;
		void jiansuo (){
			j=0;
			j1=0;
			for(int i=0;i<a3;i++){
				 for(int i1=0;i1<a11;i1++){
				 		if(b[i][i1]==1)
				 	{
				 		b[i][a11+2]++;
				 		
					 }
				 	if(b[i][i1]==2)
				 	{
				 		b[i][a11+1]++;
				 		
					 }
					 	if(b[i][i1]==3)
				 	{
				 		b[i][a11]++;
				 		
					 }
				 }
		}
	}
	int *  paixu(int *a,int u){
		for(int i=0;i<u-1;i++){
			if(a[i]>a[i+1]){
				int temp=a[i];
				a[i]=a[i+1];
				a[i+1]=temp;
			}
		}
		return a;
	} 
		void show (){
			int *p =(int *)malloc(sizeof(int)*a3);
			int *q =(int *)malloc(sizeof(int)*a3);
			int *w =(int *)malloc(sizeof(int)*a3);
			int *p1;
			int *q1;
			int *w1;
			for (int i=0;i<a3;i++){
				p[i]=b[i][a11];
				q[i]=b[i][a11+1];
				w[i]=b[i][a11+2];
			}
				p1=this->paixu(p,a3);
		q1=this->paixu(q,a3);
		w1=this->paixu(w,a3);
		if(p1[a3-1]==0&&q1[a3-1]==0&&w1[a3-1]==0){
			cout<<"unsatisfied"<<endl;
			return ;
		}
		if(p1[a3-1]>0){
			for(int u1=0;u1<a3;u1++){
				if(p1[a3-1]==p[u1]){
					cout<<u1+1<<" ";
				}
			}
			return ;
		}
		if(p1[a3-1]==0&&q1[a3-1]>0){
			for(int u1=0;u1<a3;u1++){
				if(q1[a3-1]==q[u1]){
					cout<<u1+1<<" ";
				}
			}
			return;
		}
		if(p1[a3-1]==0&&q1[a3-1]==0&&w1[a3-1]>0){
			for(int u1=0;u1<a3;u1++){
				if(w1[a3-1]==w[u1]){
					cout<<u1+1<<" ";
				}
			}
		
			return;
			
		}
		}
	
};
int main  (){
	qingwa aaa;
	aaa.kexuejia();
	aaa.language();
	aaa.dianying();
	aaa.yin();
	aaa.zi();
	
	aaa.jisuan();
	aaa.kong();
	aaa.jiansuo();
	aaa.show();
	
	
}
//无类
#include <iostream>
using namespace std;
	int *  paixu(int *a,int u){
		for(int i=0;i<u-1;i++){
			if(a[i]>a[i+1]){
				int temp=a[i];
				a[i]=a[i+1];
				a[i+1]=temp;
			}
		}
		return a;
	} 
int main  (){
	int a11,a2,a3,a4;
	
			cin>>a11;
			
		
		int *a;
	
			a=(int *)malloc(sizeof(int)*a11);
			for(int i=0;i<a11;i++){
				cin>>a[i];
			}
		
	
			cin>>a3;
		
		int **a1;
		
			
			a1=(int**)malloc(sizeof(int)*3);
			for(int i=0;i<3;i++){
				
				a1[i]=(int *)malloc(sizeof(int)*a3);
				
				
			}
			for(int i=0;i<a3;i++){
				cin>>a1[0][i];
			}
	
		
		 		for(int i=0;i<a3;i++){
				cin>>a1[1][i];
			}
		 
		 
		 int ** b;
		 int k1;
		 
		 	k1=0;
		 	b=(int **)malloc(sizeof(int)*a3);
		 	for(int i=0;i<a3;i++){
		 		b[i]=(int *)malloc(sizeof(int)*(a11+3));
			 }
		 	for(int k=0;k<a11;k++){
			 
		 		for(int i=0;i<a3;i++){
				 if(a1[0][i]==a[k]){
				 	k1+=2;
				 }
				 if(a1[1][i]==a[k]){
				 	k1+=1;
				 }
				 b[i][k]=k1;//横行为电影,列为不同的人
				 //思路大概是用数组矩阵记录每台电影对于不同人的分数,最后计算出2分的数量,填在a11列,计算出1分填在a11+1列 
				 k1=0;
			}
			
		}
		 
	
		 		for(int i=0;i<a3;i++){
				b[i][a11+1]=0;
				b[i][a11]=0;
				b[i][a11+2]=0;
		}
		 
		 int j;
		 int j1;
	
			j=0;
			j1=0;
			for(int i=0;i<a3;i++){
				 for(int i1=0;i1<a11;i1++){
				 		if(b[i][i1]==1)
				 	{
				 		b[i][a11+2]++;
				 		
					 }
				 	if(b[i][i1]==2)
				 	{
				 		b[i][a11+1]++;
				 		
					 }
					 	if(b[i][i1]==3)
				 	{
				 		b[i][a11]++;
				 		
					 }
				 }
		}
	

	
			int *p =(int *)malloc(sizeof(int)*a3);
			int *q =(int *)malloc(sizeof(int)*a3);
			int *w =(int *)malloc(sizeof(int)*a3);
			int *p1;
			int *q1;
			int *w1;
			for (int i=0;i<a3;i++){
				p[i]=b[i][a11];
				q[i]=b[i][a11+1];
				w[i]=b[i][a11+2];
			}
				p1= paixu(p,a3);
		q1= paixu(q,a3);
		w1= paixu(w,a3);
		if(p1[a3-1]==0&&q1[a3-1]==0&&w1[a3-1]==0){
			cout<<"unsatisfied"<<endl;
			return 0;
		}
		if(p1[a3-1]>0){
			for(int u1=0;u1<a3;u1++){
				if(p1[a3-1]==p[u1]){
					cout<<u1+1<<" ";
				}
			}
			return 0 ;
		}
		if(p1[a3-1]==0&&q1[a3-1]>0){
			for(int u1=0;u1<a3;u1++){
				if(q1[a3-1]==q[u1]){
					cout<<u1+1<<" ";
				}
			}
			return 0;
		}
		if(p1[a3-1]==0&&q1[a3-1]==0&&w1[a3-1]>0){
			for(int u1=0;u1<a3;u1++){
				if(w1[a3-1]==w[u1]){
					cout<<u1+1<<" ";
				}
			}
		
			return 0;
			
		}
		
	return  0;
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值