有4个互不相同的数字,输出由其中三个不重复数字组成的排列。

#include
using namespace std;
void fun(int x,int y,int z){
int i,j,temp;
for(i=0;i if(i==1){
temp=x;
x=y;
y=temp;
}
if(i==2){
temp=x;
x=z;
z=temp;
}
cout cout }
}
int main(){
int i,j,k,l;
while(cin>>i>>j>>k>>l,i||j||k||l){
fun(i,j,k);
fun(i,j,l);
fun(i,k,l);
fun(j,k,l);
}
return 0;
}
我的代码输出结果是正确的,就是提交oj时,提示我输出超限

应该问题还是出在了 while(cin>>i>>j>>k>>l,i||j||k||l) 这句,只要输入时输入一个非法值,比如含有字符(流入输入 a 1 2 3),那么 cin流就会被设置失败标志,而在流状态恢复正常之前,下次循环的所有流操作都会被忽略,由于你这里又同时使用了逗号运算符,就相当于导致了死循环。

超时了就说明算法没写好,效率低,试试用字典序生成排列吧

算法有问题吗?首位不为0 算法fun()什么意思